web-dev-qa-db-ja.com

より多くのCPUを使用するようにApacheを構成するにはどうすればよいですか?

Apacheスレッドが私のWebサーバーの1つにスタックしています(300〜500の同時リクエスト、処理に3〜8秒かかるものもあります!)が、CPU使用率は非常に低いです(〜10%)。その結果、ページの読み込み時間が大幅に遅くなっています。アイドル状態のCPUパワーは十分にあります。これらのスレッドをより速く処理するために、どうすればそれをもっと使用できますか?

これがトップのトップです...

Tasks: 469 total,   1 running, 468 sleeping,   0 stopped,   0 zombie
Cpu(s):  8.1% us,  1.7% sy,  0.0% ni, 90.3% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   9181012k total,  7998772k used,  1182240k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                                                                 
11351 Apache    15   0  364m  30m  17m S 11.9  0.3   0:00.73 httpd                                                                                                                                                                                                                                                    
 7527 Apache    15   0  365m  36m  23m S  8.6  0.4   0:01.76 httpd                                                                                                                                                                                                                                                    
 7607 Apache    16   0  364m  35m  22m S  2.3  0.4   0:01.47 httpd                                                                                                                                                                                                                                                    
11498 Apache    17   0  359m  19m  11m S  2.3  0.2   0:00.07 httpd                                                                                                                                                                                                                                                    
11497 Apache    16   0  362m  23m  13m S  1.7  0.3   0:00.05 httpd                                                                                                                                                                                                                                                    
 1840 Apache    15   0  366m  44m  29m S  1.3  0.5   0:03.74 httpd                                                                                                                                                                                                                                                    
 5358 Apache    15   0  364m  36m  24m S  1.3  0.4   0:02.58 httpd                                                                                                                                                                                                                                                    
 8090 Apache    15   0  365m  31m  17m S  1.3  0.3   0:01.10 httpd                                                                                                                                                                                                                                                    
11346 Apache    15   0  361m  28m  18m S  1.3  0.3   0:00.12 httpd                                                                                                                                                                                                                                                    
 4051 Apache    16   0  365m  40m  27m S  1.0  0.5   0:01.72 httpd                                                                                                                                                                                                                                                    
32575 Apache    16   0  365m  42m  28m S  0.7  0.5   0:03.62 httpd                                                                                                                                                                                                                                                    
 5145 Apache    16   0  365m  37m  24m S  0.7  0.4   0:02.23 httpd                                                                                                                                                                                                                                                    
 8173 Apache    16   0  363m  35m  23m S  0.7  0.4   0:00.29 httpd                                                                                                                                                                                                                                                    
 5466 Apache    15   0  365m  31m  18m S  0.3  0.4   0:01.18 httpd                                                                                                                                                                                                                                                    
 7420 Apache    16   0  364m  36m  23m S  0.3  0.4   0:01.24 httpd                                                                                                                                                                                                                                                    
11485 Apache    16   0  362m  23m  12m S  0.3  0.3   0:00.04 httpd                                                                                                                                                                                                                                                    
    1 root      15   0 10272  612  584 S  0.0  0.0   0:02.78 init                                                                                                                                                                                                                                                     
30129 root      16  -4 12536  400  396 S  0.0  0.0   0:00.00 udevd                                                                                                                                                                                                                                                    
30402 root      16   0  5840  580  480 S  0.0  0.0   0:14.01 syslogd                                                                                                                                                                                                                                                  
30414 rpc       18   0  7992  408  404 S  0.0  0.0   0:00.00 portmap                                                                                                                                                                                                                                                  
30439 root      18   0 10088  548  544 S  0.0  0.0   0:00.00 rpc.statd                                                                                                                                                                                                                                                
30478 memcache  15   0  141m 5364  516 S  0.0  0.1   1:16.34 memcached                                                                                                                                                                                                                                                
30496 root      16   0 60604  744  636 S  0.0  0.0   0:07.31 sshd                                                                                                                                                                                                                                                     
30507 root      15   0 21572  796  688 S  0.0  0.0   0:04.56 xinetd                                                                                                                                                                                                                                                   
31817 root      15   0  166m  932  860 S  0.0  0.0   0:00.03 httpsd                                                                                                                                                                                                                                                   
31820 psaadm    15   0  175m 7992 4596 S  0.0  0.1   0:02.31 httpsd                                                                                                                                                                                                                                                   
31924 root      15   0 19704  924  552 S  0.0  0.0   0:02.50 crond                                                                                                                                                                                                                                                    
13316 root      16   0 98528 3628 2796 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 1655 root      19   0  8600 1180  972 S  0.0  0.0   0:00.00 mysqld_safe                                                                                                                                                                                                                                              
 1695 mysql     16   0 4268m 464m 4684 S  0.0  5.2  10:05.19 mysqld                                                                                                                                                                                                                                                   
32564 root      16   0 98528 3612 2780 S  0.0  0.0   0:00.00 sshd                                                                                                                                                                                                                                                     
28489 root      15   0 98528 3628 2796 S  0.0  0.0   0:00.00 sshd                                                                                                                                                                                                                                                     
32152 root      16   0 98528 3612 2780 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 5781 root      15   0 98528 3628 2796 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 7801 root      17   0  356m  11m 5472 S  0.0  0.1   0:05.74 httpd                                                                                                                                                                                                                                                    
 7804 Apache    16   0  366m  36m  21m S  0.0  0.4   0:00.35 httpd                                                                                                                                                                                                                                                    
 7805 Apache    16   0  370m  31m  13m S  0.0  0.4   0:00.11 httpd                                                                                                                                                                                                                                                    
 8172 Apache    15   0  366m  34m  19m S  0.0  0.4   0:00.62 httpd                                                                                                                                                                                                                                                    
 9430 Apache    16   0  365m  45m  32m S  0.0  0.5   0:02.67 httpd                                                                                                                                                                                                                                                    
11393 Apache    16   0  363m  37m  25m S  0.0  0.4   0:00.75 httpd                                                                                                                                                                                                                                                    
11551 Apache    17   0  360m  31m  22m S  0.0  0.4   0:00.24 httpd                                                                                                                                                                                                                                                    
32345 Apache    16   0  364m  39m  27m S  0.0  0.4   0:02.86 httpd                                                                                                                                                                                                                                                    
32472 Apache    16   0  394m  70m  27m S  0.0  0.8   0:03.77 httpd                                                                                                                                                                                                                                                    
32488 Apache    16   0  364m  42m  29m S  0.0  0.5   0:02.38 httpd                                                                                                                                                                                                                                                    
32501 Apache    16   0  365m  41m  28m S  0.0  0.5   0:01.71 httpd                                                                                                                                                                                                                                                    
32644 Apache    16   0  365m  36m  23m S  0.0  0.4   0:01.79 httpd                                                                                                                                                                                                                                                    
32765 Apache    15   0  364m  39m  26m S  0.0  0.4   0:02.65 httpd                                                                                                                                                                                                                                                    
 1334 Apache    16   0  368m  42m  26m S  0.0  0.5   0:02.77 httpd                                                                                                                                                                                                                                                    
 1339 Apache    15   0  362m  39m  29m S  0.0  0.4   0:01.84 httpd                                                                                                                                                                                                                                                    
 1351 Apache    15   0  364m  43m  30m S  0.0  0.5   0:02.59 httpd                                                                                                                                                                                                                                                    
 1553 Apache    16   0  363m  41m  29m S  0.0  0.5   0:02.74 httpd                                                                                                                                                                                                                                                    
 1555 Apache    16   0  365m  37m  24m S  0.0  0.4   0:01.59 httpd                                                                                                                                                                                                                                                    
 1564 Apache    15   0  365m  40m  27m S  0.0  0.5   0:01.88 httpd                                                                                                                                                                                                                                                    
 1569 Apache    16   0  364m  35m  22m S  0.0  0.4   0:00.63 httpd                                                                                                                                                                                                                                                    
 1573 Apache    15   0  367m  39m  24m S  0.0  0.4   0:01.66 httpd                                                                                                                                                                                                                                                    
 1575 Apache    16   0  363m  36m  24m S  0.0  0.4   0:01.88 httpd                                                                                                                                                                                                                                                    
 1583 Apache    16   0  364m  34m  21m S  0.0  0.4   0:01.92 httpd                                                                                                                                                                                                                                                    
 1594 Apache    15   0  367m  44m  29m S  0.0  0.5   0:03.71 httpd                                                                                                                                                                                                                                                    
 1689 Apache    15   0  365m  38m  24m S  0.0  0.4   0:01.47 httpd                                                                                                                                                                                                                                                    
 1690 Apache    15   0  365m  39m  26m S  0.0  0.4   0:01.18 httpd                                                                                                                                                                                                                                                    
 1710 Apache    16   0  363m  34m  23m S  0.0  0.4   0:00.99 httpd                                                                                                                                                                                                                                                    
 1725 Apache    15   0  364m  39m  26m S  0.0  0.4   0:01.80 httpd                                                                                                                                                                                                                                                    
 1726 Apache    16   0  365m  40m  26m S  0.0  0.5   0:00.90 httpd                                                                                                                                                                                                                                                    
 1737 Apache    16   0  364m  30m  17m S  0.0  0.3   0:00.46 httpd                                                                                                                                                                                                                                                    
 1919 Apache    15   0  363m  34m  22m S  0.0  0.4   0:00.83 httpd                                                                                                                                                                                                                                                    
 1930 Apache    16   0  364m  33m  21m S  0.0  0.4   0:00.50 httpd                                                                                                                                                                                                                                                    
 1934 Apache    15   0  364m  40m  27m S  0.0  0.5   0:02.20 httpd

そして重要なhttpd.conf設定:

Timeout 120
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 3

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
2
Ryan

より多くのCPUを使用するようにApacheを構成するには、現在Apacheがより多くのCPUを使用することを妨げているボトルネックを取り除く必要があります。リクエストが完了するまでに3〜8秒かかるため、何らかのボトルネックがあることがわかっているので、それを見つける必要があります。

注目すべき点は次のとおりです。

  • Apacheホストがボトルネックであるかどうかを判別します。リクエストに3〜8秒かかるときにuptimeを実行すると、負荷が高い(2桁または3桁)と表示されますか?負荷が高いと問題が他の場所に存在する可能性があるため、これを実際に詳しく読むことはできませんが、リクエストに3〜8秒かかるときに負荷が低い場合は、おそらくリモートの問題です。
  • データベースなど、他のマシンでこのサービスに必要なリソースがある場合は、そこでもシステム負荷を確認してください。
  • サーバー上の「vmstat1」の出力を確認します。これにより、毎秒更新されるシステム使用率統計が表示されます。確認する必要があるのは、「cpu wa」(2桁の場合はディスクが飽和していることを意味します)、「swap si/so」(これらがゼロ以外の場合はメモリが不足していることを意味します)、および「cpuid "(アイドルCPU時間、これが10未満の場合、CPUは飽和状態です)。 「CPUsy」時間が長い場合は、フォークが多すぎる(おそらく、Apache MaxRequestsが低すぎる?)か、その他のカーネルレベルのオーバーヘッドを示している可能性があります。 Control-Cを押して、「vmstat1」出力を終了します。
  • 「strace-p [AN Apache PROCEED ID]」を実行して、Apacheプロセスが何をしているのかを知ることができます。これは、彼らが行っているシステムコールを示していますが、システムコールに慣れていない場合は、出力をテキストとして読み取るだけで情報を取得できる場合があります。たとえば、先週、あなたのように動作しているサーバーがあり、straceが数秒間一時停止し、最後に表示されたのはログメッセージでしたが、それをPHP =大量のログメッセージをsyslogに送信していたファイル。

「munin」がインストールされていない場合は、おそらくインストールする必要があります。その場合は、グラフを見て、システムの応答が遅いときと正常に動作しているときにシステム使用率がどのように変化するかを確認してください。グラフにジャンプが表示されている場合は、ボトルネックがどこにあるかを示している可能性があります。 allグラフに空白の領域が表示されている場合は、システムが飽和状態になっている可能性があります。 Apacheグラフのみが空白の場合は、Apacheが最大接続数に達したことを意味している可能性があり、パフォーマンスの問題の副作用である可能性があります。

また、複数のCPUがあり、ZopeのようなシングルスレッドアプリケーションがApacheの背後にある場合は、CPUの1つが飽和していて、他のCPUがアイドル状態になっている可能性があることにも注意してください。上部の「1」を押すと、個々のコアの使用率が表示されます。常に0%アイドル状態で、他のアイドル状態がはるかに多いものを探します。

これらの手法を使用して、これに類似したほとんどのパフォーマンスの問題を切り分けて解決することができました。

4

Apacheのパフォーマンスに関するこれまでの多くのQ&Aに目を通すと、いくつかの手がかりが得られます。

Httpd.confファイルから、サーバーがどのように構成されているかを確認するために必要な多くの情報を省略しました。スレッド構成とフォーク前構成の両方を含めましたが、どちらを使用していますか?

CPU使用率は非常に低いです(〜10%)。その結果、ページの読み込み時間が大幅に遅くなっています

いいえ-これは完全に逆になっています。ページの読み込み時間は遅くなっていますが、遅くなる原因として割り引くことができるのはCPUだけです。

may CPUを使用して実行できることがあり、他の場所(圧縮、ソフトウェアRAIDを使用)でパフォーマンスの問題を軽減できますが、実際には他の場所に問題があります。

(ICMPではなくHTTPトラフィックからの)平均RTTはいくつですか?ディスクI/Oはどのくらいありますか?メモリプロファイルはどのように見えますか?静的コンテンツを提供しているだけですか?そうでない場合は、コンテンツの生成に他に何が関係していますか?サーバーに出入りするネットワークトラフィックを監視して、予期しないものがないかどうかを確認しましたか?発行されたキャッシュ命令を監査しましたか?

0
symcbean