回答:
実稼働サーバーのスワップをオフにできますか?
いいえ。常にある程度のスワップスペースが必要です。
スワップなしで実稼働サーバーを1回実行してみましたが、約1週間後、Wordpressの更新後、PHPが予想以上のRAMを消費し始めました。RAMを使い果たし、スワップを有効にすると、物事は遅くなります(そこに押し込まれたものに応じて、多くの場合、ほんの少しですが)、ログインして問題を見つけ、修正しようとすることができますそれ。
RAMが不足してスワップがない場合、プロセスは停止し、物事は停止し、多くの場合、唯一のオプションは再起動です。しかし、その再起動を行うまで、物事はおそらく壊れます。
私の世界では、壊れることは遅いことよりもはるかに悪いです。
もちろん、システムが常にスワップの大部分を使用している場合(古いキャッシュされたものを移動する方法として使用することが非常に多い)、明らかに問題があります(「RAMを挿入してください」)が、セーフティネットを必ずお勧めします。
SpamapSからのコメントに対する回答:
「成功したウェブサイト」の世界では、マシンが爆発し、サイトの残りの部分に影響を与えないようにするホットフェールオーバー、負荷分散、およびその他のツールがあります。しかし、それには多くの現金が必要です。ほとんどのサイトでは、たとえハードウェアがお金を引き込んだとしても、冗長ハードウェアを持つことは経済的ではありません。
稼働時間に関するあなたのコメントにはまったく同意しません。従来の電子商取引の設定では、人々があなたのサイトを見ることができない場合、彼らはあなたから購入することはできません。これは単なるeコマースではなく、何らかの期間停止している場合は、すべてのオンラインの商業的利益がさらに大きくなります。企業のサイトやサービスをホストし、自分のサイトを運営しているためです。遅い=不機嫌だが、下=怒り。一度に1分間しか停止していなくても、ユーザーに「メンテナンスのためのダウン」通知が数回以上表示された場合、ユーザーはサイトを維持できないと見なします。
遅いサーバーは理想的とは言えませんが、スワップは常に実行されるわけではありません。修正中も実行を継続できるようにする最後の手段です。
また、マシン上で実行されているサービスは1つだけであると想定しています。繰り返しになりますが、現実世界ではすべてを分割するメガバックがある場合、これは真実かもしれません。複数のWebサイト、sshデーモン、ftpサーバー、電子メールサーバーなど。1つのプロセスがスワップにリークしても、別のサービスには影響しない場合があります。スワップを使用しない場合、すべてのものが即座にランダムに終了する可能性が等しくなります。それを制御することはできません。
もちろん、スワップだけが答えではありません。ラムがなくなったときに警告を発するために監視する必要がありますが、プラグを抜いて再起動するだけでは大多数の人々の答えにはなりません。これはあなたが責任を負っている多国籍ウェブサイトのどれでもうまくいくと思いますが、私たちはインターネットの大部分を占める単なる人間であり、それは商業的な自殺です。
実稼働サーバーでスワップを行うことに反対する必要があります。
私の経験では、回転ディスクスワップを使用すると、システムの予測が難しくなり、システム全体の障害が発生しやすくなります。ローカルの遅いディスクで何かをしている高負荷で人気のあるサーバーは、障害状態よりもはるかに悪い何かにすぐにスパイラルします。応答時間は通常の100倍に増加し、コンソールまたはsshからのログインなどの簡単な操作には数分かかる場合があります。
SSDスワップは特殊なケースであり、通常はシステムを強制終了させるシーク時間の低下を少なくとも取り除きます。ただし、書き込みは依然として遅いため、制御不能なプロセスから回復するまで長い時間待機することになります。
スワップを使用しない場合、LAMPサーバーは単にプロセスを強制終了してRAMを解放します。適切に監視することでこれを警告し、重要なプロセスが停止した場合は本番からサーバーを削除する必要があります。ここで最悪のケースは、ログイン方法がすべて強制終了され、ハードリセット/電源の再投入が必要になることです。この最悪のケースは、制御不能なスワッピングマシンでも発生する可能性がありますが、検出ははるかに困難です。
PHPを使用している場合は、メモリ制限を有効にし、エラーのログを監視します。ここに秘trick があります。制限を本番環境よりも開発サーバーで低く設定してください。Apacheでmod_phpを使用している場合は、MaxRequestsPerChildを数千に設定して、httpdが時間とともに大きくなりすぎる前に停止するようにします。とりわけ、メモリ使用量を監視してください!多くの場合、メモリは時間の経過とともに徐々に上昇します。問題をデバッグする間、リークサービスを定期的に再起動するだけで済みます。
スワップスペースは、アクティブなプロセスに物理メモリが必要であり、使用可能な未使用の物理メモリが不足しているとシステムが判断した場合に使用されます。システムがより多くのメモリリソースまたはスペースを必要とする場合、物理メモリ内の非アクティブなページはスワップスペースに移動されるため、その物理メモリは他の用途に解放されます。
この状況はサーバーで何度も発生します。
a)。最適化されていないスクリプトは、大量のメモリを消費する可能性があります
b)。バックアップなどのスクリプトは常に巨大なメモリを消費します
c)。交通混雑
そのため、スワップスペースを確保することをお勧めします。
スワップを使用すると、サーバーの不安定性に対する追加の安全策が得られます。RAMが不足したり、スワップのないサーバーでソフトクラッシュが発生したりする場合があります。
私が言うとき、私はおそらく少数派です。彼らがお勧めしたように、メインメモリの2倍のスワップを持つことはまだ理にかなっています。96GBのRAMを搭載したシステムでも。
費用はあまりかかりませんし、いつか必要になったら、喜んで手に入れることができます。スワップを有効にする理由は、非常に単純な費用便益分析にすぎません。やれ!:-)
私は美しい-私は古い知っている-答えのためにオリに感謝したいと思います。パーティション分割は常に環境に優しいトピックだと思います!私はオリの投稿の行に完全に同意し、これを共有したい-もちろん改善できる-私は私のサーバーのスワップ使用量を監視するために使用するスクリプト。
常にスワップが発生しないように動作するようにサーバーとサービスを構成します。それが起こるとき、何かがうまくいかないか、せいぜい、何かがあなたの最初の計画を乗り越えていることを確認してください。
実稼働環境では、このスクリプトを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