私はWordPressのウェブサイトを実行するApacheボックスを持っています。
何らかの理由で、一部の Apache スレッドが CPU の大部分 (10% 以上) を使用し、残りを少し (0.1~) 使用しているようです。
このボックスはデュアルCPUで、Intel(R) Xeon(R) CPU E5620 @ 2.40GHz (各 CPU に 4 つのコアと 8 つのスレッドがあります)。
スレッドがこのように表示されるのはなぜですか。ユーザーごとに CPU が同じではないのでしょうか?
負荷を軽減するのに役立つ Apache 最適化セットはありますか (CentOS、PHP および MySQL を含む基本 apache2 インストール)?
プリフォークとワーカーMPM設定はデフォルトで以下の通りです
# 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 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
答え1
何らかの理由で、一部の Apache スレッドが CPU の大部分 (10% 以上) を使用し、残りを少し (0.1~) 使用しているようです。
ここでさらに注意する必要があるのは、実際のアクティビティです。提供されたスナップショットでは、実行中のタスクの数は 7 で、負荷は 4 です。
したがって、この時点で、サービスを必要とする人の数は 7 人でした (おそらく -- ただし、httpd に起因するのは 6 人だけだと思います)。残りは、何らかのイベントが発生しない限り起動しないスリープ状態のプロセスです。
一部のプロセスで CPU 使用率が高く、他のプロセスで低い理由は、指定された 1 秒間の期間内に実行する処理が限られた数のプロセスだけであるためですtop
。
負荷を軽減するのに役立つ Apache 最適化セットはありますか?
実行中のプロセスの半分はおそらく 5 秒以内に完了しないので、負荷はおそらく 3 ~ 4 程度になります (負荷は 5 秒ごとに内部で測定されます)。
アクティブな Apache プロセスが多すぎます。prefork の設定はどうなっていますか? より実現可能な値に設定してみてください。まずは最大 72 から始めて、そこから調整してください。その数のプロセスで全員にサービスを提供できたとしても、すべてのプロセスが均等に遅くなり、サービスを受ける人数に応じて負荷が高くなります。全員に非常にゆっくりとサービスを提供するよりも、すぐに提供できるものを提供し、提供できないものを拒否する方がよいでしょう。
WordPress ページの一部に計算コストが高い部分があるような気がします。この計算コストの高いコンテンツの一部をキャッシュしてみてください。