解決策 1:
物理 RAM が 8 GB の大規模なシステムでは、通常、2 GB のスワップを割り当てます。これらは、Oracle または PostgreSQL を実行するロード済みデータベース サーバーです。何年もの間、重い負荷がかかったとしても、スワップ ヒットを見たことがありません。高負荷とは、およそ 100 から 150 人のユーザーが約 10,000 回の SQL 読み取りを行い、1 分あたり 2,500 回の書き込みを行う場合です。
また、swapiness レベルを調整してスワッピングを思いとどまらせ、実行する必要がないことがわかっている不要なプロセスをオフにします。 (カスタム Linux ビルド)
上記の Eddie のように、1x の物理 RAM は 4GB 未満の場合に適した経験則です。私はフォーチュン 500 に名を連ねる大企業のために Linux のカスタム ビルドを行っていますが、これらは私たちが通常行っていることであり、私がコンサルティングを行ってきた過去 5 年ほどの間、問題は発生していません。
大規模なシステム:32GB と 64GB の RAM を備えた 64 ビット Linux、これらは私たちの Oracle データベース サーバーであり、通常、上記の Eddie の指摘のようなもののために 2GB のスワップを保持します。アイドル プロセスは、スワップ設定に応じてスワップに移動されます。 /P>
解決策 2:
一見時代を超えた質問。 SlashDot の善良な人々は、これについて少し前に議論しました。彼らの意見をチェックしてください:
- 最新の HDD ではディスク容量は問題になりません。最新の TB ドライブでは 16 GB はまだ些細な量です。
- ただし、メモリ管理が不十分な場合、大量のスワップ領域が問題になる可能性があります:
私が 4 GB の映画を 2 時間にわたって視聴すると、多くのメモリ マネージャーが、そのデータをすべてキャッシュしようとするのは良いことであると判断します。ムービーの途中で、実行中の他のすべてのプログラムが 1 時間使用されていないと見なされ、その 4 GB ファイルをさらにキャッシュするために安全に交換できます。最終的な結果として、映画を見た後にプログラムの半分がスワップ アウトされ、システムの動作が遅くなり、スワップ ファイル全体が破棄されます。
- 最終的には、大まかな公式ではなく、メモリ要件から適切な決定を下す必要があります:
[日常的に使用したいプログラムを実行するのに十分な RAM] がある場合は、スワップを使用する理由はありません。
解決策 3:
回答を参照してください。ハイ メモリ システムの SWAP スペースはどれくらいですか?あなたの質問はより一般的ですが、いくつかのガイダンスがあります。これについては意見が大きく異なりますが、一般的に 1 GiB 以上の RAM を持つ人は、完全にスワップしないで実行するか、スワップとして 1xmemory を使用して実行するようです。
スワップを強制するほど多くの RAM を使用する予定がない場合でも、スワップとして少なくとも 1x メモリを使用することには、ある程度の価値があります。これにより、オペレーティング システムは、使用されることが予期されていないものをスワップ アウトできます。たとえば、代わりにそのメモリをディスクまたは IO バッファに使用できるようにします。
解決策 4:
システムが休止状態になり、正常に再開できると期待している場合:-)、物理 RAM の量よりも多くのスペースをスワップ パーティションに割り当てる方がよいでしょう
解決策 5:
私の VPS プロバイダーはサーバー用のスワップ スペースさえ提供しておらず、それがなくても問題なく動作しています。
仕事で日常的に目にするほとんどのサーバーもスワップレスです。
編集
ただし、JVM を実行している場合は、必ず確認してください 少なくとも持っている 今までにできる限り多くのスワップ スペース -Xmx
を設定 JVM の既知の問題のためです。
つまり、JVM が現在使用しているよりも多くのメモリを必要とする場合 (ただし、まだ Xmx
に達していない場合) )、それ:
- 自身をディスクにスワップ
- 新しいメモリを割り当てます
- 自分自身を RAM に読み込みます
これは、スワップが Xmx
未満の場合を意味します 、失敗する可能性があります。
バグレポートを引用するには
<ブロック引用>最善の方法は、このエラーが発生したマシンのスワップ サイズを増やすことです。
JVM を扱うときは安全にプレイし、スワップを同じ物理メモリに設定するようにしています。