Linux Webサーバーのスワップを完全にオフにする必要がありますか?


22

最近、私の友人は、十分なメモリのあるLinux Webサーバーでスワップをオフにすることをお勧めします。私のサーバーは12 GBであり、現在、ピーク負荷の下で4 GB(キャッシュとバッファーをカウントしない)を使用しています。

彼の主張は、通常の状況ではサーバーはそのRAMをすべて使用しないため、OutOfMemory状況に遭遇する唯一の方法はバグ/ ddos​​ / etcによるものであるということでした。スワップが投入された場合にはそうオフシステムは、最終的にはプログラムのホギングメモリ(ほとんどの場合、Webサーバー・プロセス)と、おそらくいくつかの他のプロセスがクラッシュすることメモリ不足になります。スワップがオンになっている場合RAMとスワップの両方を消費し、最終的には同じクラッシュを引き起こしますが、その前にsshdのような重要なプロセスをオフロードしてスワップし、多くのスワップ操作を開始して大幅なスローダウンを引き起こします。この方法では、ddosシステムの下で大きな遅延のために完全に使用できない状態になる場合があり、ログインしてWebサーバープロセスを強制終了したり、すべての着信トラフィック(ssh以外)を拒否することはできません。

これは正解?何かが足りませんか(スワップパーティションは、十分なRAMがあったとしても、ある意味で非常に便利です)。オフにする必要がありますか?


6
したがって、すべての答えは、1。より少ない仮想メモリが無条件に少ないよりも優れていること、および2.どちらも適切に接地されていないために有効化されたスワップが必要であるというステートメントに要約されます。
ねこじる荘

2
スワップは「メモリの予約」専用であると考えるのは間違っています。スワップは、未使用のメモリを置く場所を意味します(したがって、実際のメモリをより効率的に使用できます)。常にスワップが必要です。メモリ不足の場合は、メモリ不足-期間。これは容量管理の問題であり、スワップする傾向はありません。仮想メモリの意図をよりよく説明しようとする、かなり長い応答serverfault.com/a/332205/75118があります。
マシューイフェ

回答:


27

私はそれがあなたのユースケースに依存すると言うでしょう、そして、答えの残りはこれをかなりうまくカバーしました。4Gのスワップは、結局のところ、安全を買うための安価な方法です。そして、この安さが、人々がそれを止めたくないようにしていると感じています。

しかし、修辞的な質問で答えさせてください。お金に問題がなく、12GのRAMと4Gのスワップを持つシステムと、16GのRAMとスワップなしのシステムの2つのシステムから選択できる場合、どちらを選択しますか?残念ながら、ほとんどの人はまだ彼らはRAMの16Gを選ぶだろうと答えるとなり、まだ私のポイントを逃しているスワップの4Gを追加します。

また、別の注意事項として、私は個人的に、クラッシュしたシステムよりもスワップシステムの方が悪いと感じています。クラッシュしたシステムは、スタンバイバックアップサーバーをトリガーして、より早く引き継ぎます。また、アクティブ-アクティブ(または負荷分散されたセットアップ)では、クラッシュしたシステムはより早く回転から外されます。スワップなしのシステムが再び勝利。


14

十分なメモリがある場合でも、スワップをオフにすることは推奨されません。サーバーがより多くのメモリを必要とし、それを取得できなかった場合、サーバーはクラッシュします。ただし、スワップ領域がある場合、これは(ある程度)防ぐことができます。

はい、swapを使用するとサーバーのパフォーマンスが低下しますが、少なくとも操作可能でアクセス可能な状態になります。その後、サーバーがスワップの使用を開始する場合、必要に応じてメモリを追加する計画を立てることができます。

このページを見つけましたスワップについて話しています。3番目のセクションをご覧ください。

代わりにスワップをオフにすると、あなたがコントロールすることができswapinessを


1
状況ではスワップとRAMの両方を消費しクラッシュすること説明しました。数か月間実行されており、30%を超えるメモリを使用したことはありません。そのため、通常の操作中に100%に急速にジャンプすることはほとんどありません。そのため、一部のプロセスが狂って8GBを消費した場合、OSが取得できる限りのメモリを消費することを意味し、それはすべてを意味します。
ポマ

@Poma、スワップには他にも利点があります。また、スワップがある場合、システムの寿命を大幅に延ばすことができます。これは、安価なHDドライブが利用可能な場合、スワップがメモリよりも大きくなる可能性があるためです。
ハレド

6

いいえ、それは良い考えではありません。「いくつかのプロセスが狂った」とは、事前に積極的に電話をかけていたことを意味します

ulimit -d

プロセス作成時またはその前に、プロセスデータセグメントメモリごとに制限を設定します-そして、おそらくスレッド数の制限

ulimit -T

プロセスごと。ulimitはあなたの友達です。スワップをオフにする前に、メモリチューニングガイドのいずれかを読むことを検討してください。DOS攻撃または不正なプログラムを処理するために、カーネルパラメータをいくつかの変更することもできます。

このように見てください:システムの合計メモリはRAM +スワップです。12GBのスワップがある場合、スワップを無効にすることで、システムVMの容量を効果的に半分に削減できます。悪いアイデア。これは議論ではなく、実際、以前の悪い経験から他の人が何年も知っていることを単に読んでいるだけです。友人も読書をする必要がある可能性があります。


5

他の人が言ったように、「swappiness」パラメーターをいじって絶対に必要な場合を除き、swapを使用してサーバーを効果的に停止できます。これは、カーネルがメモリページをどれだけ積極的にスワップアウトするかを制御します。

現在の設定を確認するには、次を使用します。

cat /proc/sys/vm/swappiness

そして(rootで) "live"で編集できます:

# echo "10" > /proc/sys/vm/swappiness

永続化するには、/ etc / sysctl.confに次を追加します。

vm.swappiness=10

2

できるもう1つの良いことは、zRAMを使用してRAMにスワップすることです。これは素晴らしいアイデアだと思います!パフォーマンスのために、スワップをまったく持たないようなものですが、システムの負荷が非常に高い場合のクラッシュも防ぎます!

これを見てください:

http://www.webupd8.org/2011/10/increased-performance-in-linux-with.html

私の経験:今書いているこのマシンでは、スワップを無効にしました。4GbRAMを持っているからです(2009年はかなりでした!)。いくつかの問題が発生しただけで、そのうちの1つは誤って同時に127枚の写真のように開いていました!

しかし..これはワークステーションであり、ハングした場合は再起動する余裕があります。サーバーでは、スワップを使用した方が良いと思います。RAMのスワップは私にとって良い音です。


1

すでに十分に明らかにされているように、これは良い考えではありません。他に何もない場合、スワップは、物事が非常に正常ではないときのために、あなたにいくつかの呼吸空間を与えます。たとえば、私が見るシステムでは、通常1日あたり数人の訪問者しかいないため、雑誌に掲載されているページが原因でトラフィックが急増しました。これにより、Webサーバーが試運転以来初めてスワップスペースを使用するようになりました。そのスワップ空間がなければ、物事はあまりうまくいきませんでした。


0

良い考えではありません。優先度の異なる2つのスワップファイルを定義できます。使用中の小さい方と、最初にいっぱいになった場合に使用される大きい方。

また、vm.swappinessは、ディスクスワッピングがどの程度積極的に発生するかを制御するのに役立ちます。


0

vm.swappinessに0を挿入しても、システムがスワップしないことを必ずしも意味しません。これは、カーンがスワップする傾向がどれほど積極的であるかを決定するパラメーターですが、スワップをオフにしません。

繰り返しますが、スワッピングは悪くありませんが、スラッシングは悪いです。sysstatデータを見てみると、かなり良いポインタが得られるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.