web-dev-qa-db-ja.com

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

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

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

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

ありがとう!

13
Arman

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

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

Wordpressの更新、PHPが私たちが説明したよりもはるかに多くのRAMを食べ始めた後、スワップなしで実稼働サーバーを1回実行してみました。 。 RAMを使い果たし、スワップを有効にすると、物事は遅くなります(そこに押し込まれたものに応じて、多くの場合、ほんの少しですが)、ログインできます。問題を修正してください。

RAMを使い果たし、スワップがない場合、プロセスは停止し、物事は停止し、多くの場合、唯一のオプションは再起動です。ただし、その再起動を行うまで、おそらく問題が発生します。

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

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


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

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

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

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

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

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

14
Oli

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

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

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

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

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

4
SpamapS

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

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

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

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

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

3
aneeshep

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

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

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

2
Stefano Palazzo

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

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

実稼働環境では、このスクリプトを30分ごとにcrontabします。 Swap usage!= 0kの場合、通知を送信します。ほとんどの場合、問題について迅速に調査/対処することができます。before物事は本当にwrongになります。

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="[email protected]"

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
0
Marco