2016-04-19 7 views
0

これはプログラミングに関連する質問ですが、サーバーの管理面ではさらに重要です。Node.jsを含むたくさんのInode

私は利用可能な256Kのノードを持つサーバーを持っていますが、それ以外のところでは、5つのプロジェクトがこのサーバー上で多くのノードの依存関係(および多数のネストされた依存関係)で動作しています。これらの5つのプロジェクトのnpm installでは、使用可能なすべてのiノード(正確には251844の176215)の70%を使用しています。

私の質問は:

は、ノードDEPSを圧縮する方法はありますか?ファイルあたりのデータ量は増えますが、ファイル数は少なくなりますか?

おかげ

+1

NPMの最新バージョンは、別々にネストするのではなく、依存モジュールを共有します。 – jfriend00

+0

これは素晴らしい提案ですが、npmはこれを自動的にはまだ実行していないようです。手動でnpmの重複を実行します。 https://docs.npmjs.com/cli/dedupe – TinkerTank

答えて

1

私はnode_modules内のファイル数を削減する自動方法を知っていません(これはNPMはその依存関係を保存する場所です。)しかし、私はiノードの使用を減らすためにいくつかのオプションを考えることができます。

1)これらのプロジェクト間で(同じバージョン番号の)共有依存関係が存在する場合、あるプロジェクトからいくつかの依存関係をシンボリックリンクすることができます。多くのネストされた依存関係を持つ依存関係を取得した場合、これは実際にはかなりのinodeを節約できます。

2)もう1つの選択肢として、共有依存関係がある場合は、プロジェクト1のnode_moduleをcp -lを使用してプロジェクト2にコピーする方法があります。この場合、各コピーは同じファイルへのハードリンクになり、追加のinodeを使用することはありません。その後、npm install & & npmを実行して、プロジェクト2でpruneを行って、変更/追加の依存関係をダウンロードします。 (また、テストされていない)

3)しかし、どちらのオプションもハッキーで、後でコピーしたり、バックアップを復元した後など、デバッグの難しい問題を引き起こすことがあります。より多くのinodeを持つファイルシステムを再作成してください。 ext4の場合、これはmkfs.ext4 -iで行うことができます。 https://unix.stackexchange.com/questions/26598/how-can-i-increase-the-number-of-inodes-in-an-ext4-filesystemを参照してください。

+0

遅いupvoteのため申し訳ありませんが、最初に 'npm dedupe'をコメントしてからファイルシステムを試します。 1&2は本当にハッキーに見えます(個人的なプロジェクトではうまくいきますが、私のものはプロダクトで動いています...) –

+0

np。 :) - あなたのために働いていたことを私に教えてください! – TinkerTank

関連する問題