web-dev-qa-db-ja.com

LinuxサーバーのHTTPプロセスがサーバーを毎日停止させる

LinuxをレンタルしますVM XenederのゲストであるLayeredTechから。OSはCentOS 5.3で、Apache2を実行しています。ほぼ毎日、私のサーバーは、私が信じているような動作をします。 DDoSされていますが、そのような証拠は見つかりません。ApacheMod_security、MySQL 5.x、PHP 5.xを実行しています。すべてのバージョンが最新です。

VMは比較的低電力ですが、この症状が発生していない場合は、Webトラフィックの負荷を適切に処理します。

Webサーバーが応答しなくなり、ログイン時に何百ものHTTPDプロセスが存在します。私の仮想ホストはすべてchrootされ、SUexecを使用していますが、生成されたすべてのプロセスは「Apache」ユーザーとして実行されています。

私のボックスで実行されている悪意のあるWebサイトはなく、サーバーは侵害された形跡がありません。

問題が発生すると、負荷平均が250を超え、httpdを強制的に再起動するだけで済み、24〜72時間の間は問題なく動作します。

調べたと思われるすべてのログファイルを調べましたが、DDoSの証拠、「digg効果」のようなトラフィックの証拠は見つかりませんでした。 HTTPDを再起動するとすぐに、HTTPDが非常に多くのプロセスを生成する原因となっていたものが停止します。高トラフィックのWebサイト、巨大なサイトのフロントページリンク、またはDDoSが原因である場合、リクエストが停止せず、httpdを再起動した直後にサーバーをハングアップさせると思います。

私はまた、apachetopやその他のリアルタイム監視ツールなどのさまざまなツールを使用しましたが、通常、これがいつ発生するかを予測することはできません。発生するまでに、サーバーは過負荷になりすぎて、HTTPDの強制終了以外にも何もできません。

これが起こらないようにする方法について私は途方に暮れており、原因について他にどこを見ればよいのかわかりません-どんなアイデアでもありがたいです!

追加情報:

サーバーを構築してから約2年が経過し、これらのパラメーターをいくつかの読み取り値に基づいて構成しましたが、問題はありませんでしたが、これらの設定が原因であるかどうかはわかりません。

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
4
WerkkreW

ログに何もないのは確かですか?

ApacheのMPMワーカーを構成して、開始/管理するプロセスの数を制限できます。

あまり知られていないDDoS攻撃もあり、接続が終了したときに接続を閉じる代わりに、接続を存続させます(HTTPのキープアライブメカニズム)。これにより、ApacheがこれらのDDoSプロセスからの要求を処理し、生成すると、数百の追加プロセスが開始される可能性があります。新しいプロセスのための新しいもの。

Apacheを再起動すると、これらの不正なプロセス、つまり接続が停止されるため、攻撃者が切断されたことを認識して再試行するのにかかる時間によって異なります。

Server-statusハンドラーとserver-infoハンドラーを有効にして、ビジー状態になったときにそれらを監視して、サーバーの動作を特定することもできます。

http://httpd.Apache.org/docs/2.2/mod/mod_status.html

http://httpd.Apache.org/docs/2.2/mod/mod_info.html

4
Andy Shellam