Apacheがサーバーにとんでもない負荷をかける


2

サーバーでapache2を実行しています。
今日、多くのhttp要求がありましたが(異常ではありません)、どういうわけか負荷平均は200を超えました(!!!)。明らかに、ウェブサイトはダウンしていました(到達できません)。

ここに画像の説明を入力してください

Apacheを停止すると、負荷が比較的急速に低下しますが、再度開始するとすぐに、負荷は数秒で100を超えました。
奇妙なことは、CPUとMEMのワークロードが正常であるか、システムが「実現」していないかのように処理しなければならないプロセスが多いことです。

さらに奇妙なのは、すべてのコアでCPU負荷が突然100%になったことです。 ここに画像の説明を入力してください

そこから負荷は数分以内に通常(<1)に戻り、Webサイトが突然再びアクセス可能になりました。

私は本当にこのような行動を自分で説明することはできません。誰も私が将来それを防ぐのを助けることができますか?


5
Apacheのログをチェックして、Apacheが何をしていたのかを調べることから始めることをお勧めします。
デビッドシュワルツ

最初にWebサーバーのログを確認する必要があります。Apacheの最新バージョンを使用していることを確認してください(Apacheに最近修正されたDoS脆弱性がいくつかありました)。
FINESEC

回答:


4

2つのワイルドな推測:

1)ドキュメントルートは、NFSまたは他のネットワークファイルシステム、またはクラスターファイルシステムを介して提供されますが、クラスターファイルシステムは応答が遅いか、まったく応答しません。

2)Apache(およびPHPスクリプトなど)がデータベースまたはその他の外部リソースを待機しています。

私の最初の推測は、1)すべてが非常に短いスパイクで正常に戻ったためです。その場合は、ネットワークまたはファイルサーバーを確認してください。


NFSを追加したばかりなので、最初の推測は正しいかもしれません。error.logで、私はいくつかの興味深い情報を見つけました(おそらく役立つ):([warn] child process 2373 still did not exit, sending a SIGTERMそれらがたくさんありました)。そして、Webサーバーを再起動した後:[error] server reached MaxClients setting, consider raising the MaxClients setting
horen

NFSv4は、特に古いカーネルを使用していると、時として驚かされることがありますが、積極的な方法ではありません。NFSv3はまったく問題なく動作するはずです。[rw]sizeマウントオプションをネットワークに合わせて調整し、ベンチマークが何が効果的かを確認してください。通常、32768または65536は適切な値です。
ジャンヌピッカライネン

1

@Janne Pikkarainenの最初の推測を補完するものとして、

また、エラーログメッセージ、特に仮想ホストに複数のログファイルがある場合はデフォルトの(internal dummy connection)署名についても確認してください。詳細はこちら

一部のapache2バージョンでは、グレースフルリロードまたはガベージコレクションを強制するように設定されたApache内部接続を通知します。それらはすべての生きている子に送信され、デフォルトの仮想ホスト(apache2 -Sからの最初の仮想ホスト)によって管理されます。デフォルトの仮想ホストがリソースを集中的に使用している場合、この突然のピークはログガベージだけでなく、このような悪影響を引き起こす可能性があります。

NFSまたはデータベース(またはその他のブロック)がこれらにヒットした場合、簡単な修正方法は、実際のダミーのデフォルト仮想ホスト(「機能する」仮想ホスト)を持つことです。


1

prefork MPMは、高性能の実稼働展開にはとてつもなく不適切です。追加プロセスの起動は非常に高価であり、各プロセス(スレッド)は最大30MBを簡単に使用できます。

代わりに、ワーカーMPMまたは(最新のApacheを実行している場合)イベントMPMの使用を検討してください。

同じメモリフットプリントで、スレッド数を10倍に増やすことができます。


PHPでworker / eventを使用することはできますか?私はそれがノーゴーだと思った。
パウスカ

マルチスレッドで問題を引き起こすPHP拡張機能を使用しない限り、それは可能です。または、代わりにFCGIを使用します。PHPのパフォーマンスもさらに向上します。
アダプター

ええ、FastCGIは本当に最近の方法です
。– pauska

0

Apacheの設定を見て、次のディレクティブに注意してください。

それらのデフォルト設定は適切ではないかもしれません。私の場合、これは事実であり、サーバーが通常よりも多くヒットした場合、Apacheは多くのメモリを使用していました。私の問題はこれらの価値を減らすことで解決しました。

実稼働Apacheの構成を理解していることを確認してください-テスト用のデフォルトがあります。

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