サーバプロセスの8つのCPUコアすべてがApacheプロセスのためにほぼ100%の負荷になることがあります。 MySQLを除く高負荷プロセス)。サーバのCPU負荷を積み上げている間、実行中のPHPプロセスが滞っていく時間
Apacheの再起動は常に動作しますが、通常は数時間だけですが、1週間前であっても動作します。目に見えるパターンはありません。全体的な負荷は約10になりますが、マシンはまだ非常に迅速に応答しています(通常、1日から4日または6日の天井に浮かびます、昼間によって異なります)。しかし、これらの絶え間ないスパイクと、訪問またはcronジョブによって引き起こされる実際のサーバーストレスとは関連していません。それはかなりランダムなので、私の最高の推測は、何度も何度も何度も何度も何度も何度も何度も何度も何度も繰り返していたPHPスクリプトです。
CPUが発熱して寿命が短くなり、このPHPプロセスでどれくらいのリソースが費やされているのか分からない人は、わかりません。
すべてのPHPプロセスはApacheプロセスでラップされているため、UNIXプロセスリストで現在実行されているPHPスクリプトを実際に見ることはできません。特定のスクリプトを指す別の方法がありますか? PHPスクリプトの中に何らかのトラッキングコードを実装する以外にも、私はウェブホスティングを実行していませんが、複数のサイトがあります。ウェブサーバー全体に広がったこのようなコードでトラッキングコードを実装する方法がわかりません。
したがって、私は純粋なunixソリューション(Debian)を探しています。最悪の場合、それはPHPクラスとcontollersの数十を含むPHPスクリプトに私を指摘します。最良の場合、それは単純なスクリプトになります。いずれにせよ、それはスタートです。おもう。
どのmpmを使用しますか? – Rufinus
まず、apacheのmod_server_statusを有効にすると、どのリクエストがリソースを枯渇させているのかを知ることができます。 http://httpd.apache.org/docs/2.0/mod/mod_status.htmlまた、 'strace -p'を使って100%CPUプロセスに接続し、どのシステムコールがそれを作っているのか見ることができます。それはあなたにヒントを与えるかもしれません。 –
私はプリフークを使用しています – Saix