LAMPサーバーにスワップパーティションが必要ですか?


14

LAMPを使用して、ubuntu-serverのパーティションを実際にスワップする必要がありますか?私はそれを必要としないと思いますが、それが何らかの予期しない振る舞いを引き起こさないかどうかを確実に知る方が良いです。
実際に私の考えは次のとおりでした:

  • サーバーが休止状態になることはありません
  • スワップする場合は、ロードバランシング/トラフィックシェーピングなどについて考える必要があります。

実稼働サーバーのスワップをオフにできますか?

ありがとう!

回答:


14

実稼働サーバーのスワップをオフにできますか?

いいえ。常にある程度のスワップスペースが必要です。

スワップなしで実稼働サーバーを1回実行してみましたが、約1週間後、Wordpressの更新後、PHPが予想以上のRAMを消費し始めました。RAMを使い果たし、スワップを有効にすると、物事は遅くなります(そこに押し込まれたものに応じて、多くの場合、ほんの少しですが)、ログインして問題を見つけ、修正しようとすることができますそれ。

RAMが不足してスワップがない場合、プロセスは停止し、物事は停止し、多くの場合、唯一のオプションは再起動です。しかし、その再起動を行うまで、物事はおそらく壊れます。

私の世界では、壊れることは遅いことよりもはるかに悪いです。

もちろん、システムが常にスワップの大部分を使用している場合(古いキャッシュされたものを移動する方法として使用することが非常に多い)、明らかに問題があります(「RAMを挿入してください」)が、セーフティネットを必ずお勧めします。


SpamapSからのコメントに対する回答:

「成功したウェブサイト」の世界では、マシンが爆発し、サイトの残りの部分に影響を与えないようにするホットフェールオーバー、負荷分散、およびその他のツールがあります。しかし、それには多くの現金が必要です。ほとんどのサイトでは、たとえハードウェアがお金を引き込んだとしても、冗長ハードウェアを持つことは経済的ではありません。

稼働時間に関するあなたのコメントにはまったく同意しません。従来の電子商取引の設定では、人々があなたのサイトを見ることができない場合、彼らあなたから購入することはできません。これは単なるeコマースではなく、何らかの期間停止している場合は、すべてのオンラインの商業的利益がさらに大きくなります。企業のサイトやサービスをホストし、自分のサイトを運営しているためです。遅い=不機嫌だが、下=怒り。一度に1分間しか停止していなくても、ユーザーに「メンテナンスのためのダウン」通知が数回以上表示された場合、ユーザーはサイトを維持できないと見なします。

遅いサーバーは理想的とは言えませんが、スワップは常に実行されるわけではありません。修正中も実行を継続できるようにする最後の手段です。

また、マシン上で実行されているサービスは1つだけであると想定しています。繰り返しになりますが、現実世界ではすべてを分割するメガバックがある場合、これは真実かもしれません。複数のWebサイト、sshデーモン、ftpサーバー、電子メールサーバーなど。1つのプロセスがスワップにリークしても、別のサービスには影響しない場合があります。スワップを使用しない場合、すべてのものが即座にランダムに終了する可能性が等しくなります。それを制御することはできません。

もちろん、スワップだけが答えではありません。ラムがなくなったときに警告を発するために監視する必要がありますが、プラグを抜いて再起動するだけでは大多数の人々の答えにはなりません。これはあなたが責任を負っている多国籍ウェブサイトのどれでもうまくいくと思いますが、私たちはインターネットの大部分を占める単なる人間であり、それは商業的な自殺です。


ここでの同じ経験、ちょっと...それは私の側の間違いであり、意図的な決定ではありませんでした。スワップのないサーバーは、特にsshdを強制終了することを決定した場合、修復するのは大変です。
ハビエルリベラ

...私は約16ギガRAM、それの半分は、高速IOのためにキャッシュされ、残りはスワップは常に無料で、LAMPのためである、またはいくつかの倍数メガバイトがあるが、私はそれは常にオフだと思う
アルマン

3
成功したウェブサイトの世界では、無反応は壊れているよりも悪いです。ユーザーは実際にFAST障害(javascriptフロントエンドコードが正常に処理する必要があります)を高く評価しますが、低速であることを嫌います。スワップを捨てて、避けられないものを遅らせるだけです。-1
SpamapS

1
@Oli:N + 1を実行するのにメガバックは必要ありません。実際、特別なスキルさえ必要としません。サーバーがさまざまな理由でダウンすることは避けられませんが、これが問題でないことを防ぐのはそれほど難しくありません。スタンドアロンのLAMPサーバーですべてを実行している場合は、さらに費用がかかります。さらに2つとロードバランサーを設定する(t1.microsとEBSスナップショットを使用するEC2で、これは非常に安価になる可能性があります)、またはサイトが最大の日で使用できないほど遅くなりますか?グーグルからのデータを確認してください...私はその明確なbit.ly/hB1AD1
SpamapS

1
実世界のサーバーのケースをカバーする素晴らしい答え。冗長ハードウェア、LB、監視、RAMキャッシュなどを追加することはすべて非常に重要であり、スワップスペースが安くなったために手間がかからない場合は、それらをセットアップしてデバッグする時間があります。
ImaginaryRobots

4

実稼働サーバーでスワップを行うことに反対する必要があります。

私の経験では、回転ディスクスワップを使用すると、システムの予測が難しくなり、システム全体の障害が発生しやすくなります。ローカルの遅いディスクで何かをしている高負荷で人気のあるサーバーは、障害状態よりもはるかに悪い何かにすぐにスパイラルします。応答時間は通常の100倍に増加し、コンソールまたはsshからのログインなどの簡単な操作には数分かかる場合があります。

SSDスワップは特殊なケースであり、通常はシステムを強制終了させるシーク時間の低下を少なくとも取り除きます。ただし、書き込みは依然として遅いため、制御不能なプロセスから回復するまで長い時間待機することになります。

スワップを使用しない場合、LAMPサーバーは単にプロセスを強制終了してRAMを解放します。適切に監視することでこれを警告し、重要なプロセスが停止した場合は本番からサーバーを削除する必要があります。ここで最悪のケースは、ログイン方法がすべて強制終了され、ハードリセット/電源の再投入が必要になることです。この最悪のケースは、制御不能なスワッピングマシンでも発生する可能性がありますが、検出ははるかに困難です。

PHPを使用している場合は、メモリ制限を有効にし、エラーのログを監視します。ここに秘trick があります。制限を本番環境よりも開発サーバーで低く設定してください。Apacheでmod_phpを使用している場合は、MaxRequestsPerChildを数千に設定して、httpdが時間とともに大きくなりすぎる前に停止するようにします。とりわけ、メモリ使用量を監視してください!多くの場合、メモリは時間の経過とともに徐々に上昇します。問題をデバッグする間、リークサービスを定期的に再起動するだけで済みます。


1
あなたの経験を共有してくれてありがとう。sshがInfを使用していたとき、私は同様の問題を説明していました。プロセスのメモリを制限することを強制しました。これにより、sshを実行してバグのあるスクリプトを修正できました。
アーマン

私がインターネットで見た、実稼働環境でのスワップスペースに関する最も興味深い議論の1つ。(スレッド全体、長所と短所)
dpb

3

スワップスペースは、アクティブなプロセスに物理メモリが必要であり、使用可能な未使用の物理メモリが不足しているとシステムが判断した場合に使用されます。システムがより多くのメモリリソースまたはスペースを必要とする場合、物理メモリ内の非アクティブなページはスワップスペースに移動されるため、その物理メモリは他の用途に解放されます。

この状況はサーバーで何度も発生します。

a)。最適化されていないスクリプトは、大量のメモリを消費する可能性があります
b)。バックアップなどのスクリプトは常に巨大なメモリを消費します
c)。交通混雑

そのため、スワップスペースを確保することをお勧めします。

詳細:https : //help.ubuntu.com/community/SwapFaq


説明ありがとう。バグのあるスクリプトがある場合は、いずれにせよサーバーをクラッシュさせます。システムの制限がスクリプトを制御するはずです。
アーマン

aneeshep、トラフィックが多いときにスワッピングする場合、システムは通常よりも100倍遅くなります。それは一般的に受け入れられません。
SpamapS

2

スワップを使用すると、サーバーの不安定性に対する追加の安全策が得られます。RAMが不足したり、スワップのないサーバーでソフトクラッシュが発生したりする場合があります。

私が言うとき、私はおそらく少数派です。彼らがお勧めしたように、メインメモリの2倍のスワップを持つことはまだ理にかなっています。96GBのRAMを搭載したシステムでも。

費用はあまりかかりませんし、いつか必要になったら、喜んで手に入れることができます。スワップを有効にする理由は、非常に単純な費用便益分析にすぎません。やれ!:-)


0

私は美しい-私は古い知っている-答えのためにオリに感謝したいと思います。パーティション分割は常に環境に優しいトピックだと思います!私はオリの投稿の行に完全に同意し、これを共有したい-もちろん改善できる-私は私のサーバーのスワップ使用量を監視するために使用するスクリプト。

常にスワップが発生しないように動作するようにサーバーとサービスを構成します。それが起こるとき、何かがうまくいかないか、せいぜい、何かがあなたの最初の計画を乗り越えていることを確認してください。

実稼働環境では、このスクリプトを30分ごとにcrontabします。Swap usage!= 0kの場合、通知を送信します。ほとんどの場合、問題が実際に悪化するに、問題を迅速に調査/対処することができます。

bash、top、echo、awk、および動作中のメールコマンドがあり、チェックは実行されていません。

お役に立てば幸いです。

#!/bin/bash
CURRSWAP=$(top -b -n1 |grep Swap |awk '{print $4}')
ECOMM="echo $CURRSWAP means healthy, I wont take any action."
CURRDATE=$(date)
MAILDST="your@email.addr"

case $CURRSWAP in
  [0]k) $ECOMM
        exit 0
        ;;
  *)    echo -e "Server: $HOSTNAME \n Date: $CURRDATE \n Current Swap partition usage: $CURRSWAP" | mail -s "Warning from $HOSTNAME" -- $MAILDST
        exit 0
        ;;
esac
exit 0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.