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>
より多くのCPUを使用するようにApacheを構成するには、現在Apacheがより多くのCPUを使用することを妨げているボトルネックを取り除く必要があります。リクエストが完了するまでに3〜8秒かかるため、何らかのボトルネックがあることがわかっているので、それを見つける必要があります。
注目すべき点は次のとおりです。
uptime
を実行すると、負荷が高い(2桁または3桁)と表示されますか?負荷が高いと問題が他の場所に存在する可能性があるため、これを実際に詳しく読むことはできませんが、リクエストに3〜8秒かかるときに負荷が低い場合は、おそらくリモートの問題です。「munin」がインストールされていない場合は、おそらくインストールする必要があります。その場合は、グラフを見て、システムの応答が遅いときと正常に動作しているときにシステム使用率がどのように変化するかを確認してください。グラフにジャンプが表示されている場合は、ボトルネックがどこにあるかを示している可能性があります。 allグラフに空白の領域が表示されている場合は、システムが飽和状態になっている可能性があります。 Apacheグラフのみが空白の場合は、Apacheが最大接続数に達したことを意味している可能性があり、パフォーマンスの問題の副作用である可能性があります。
また、複数のCPUがあり、ZopeのようなシングルスレッドアプリケーションがApacheの背後にある場合は、CPUの1つが飽和していて、他のCPUがアイドル状態になっている可能性があることにも注意してください。上部の「1」を押すと、個々のコアの使用率が表示されます。常に0%アイドル状態で、他のアイドル状態がはるかに多いものを探します。
これらの手法を使用して、これに類似したほとんどのパフォーマンスの問題を切り分けて解決することができました。
Apacheのパフォーマンスに関するこれまでの多くのQ&Aに目を通すと、いくつかの手がかりが得られます。
Httpd.confファイルから、サーバーがどのように構成されているかを確認するために必要な多くの情報を省略しました。スレッド構成とフォーク前構成の両方を含めましたが、どちらを使用していますか?
CPU使用率は非常に低いです(〜10%)。その結果、ページの読み込み時間が大幅に遅くなっています
いいえ-これは完全に逆になっています。ページの読み込み時間は遅くなっていますが、遅くなる原因として割り引くことができるのはCPUだけです。
may CPUを使用して実行できることがあり、他の場所(圧縮、ソフトウェアRAIDを使用)でパフォーマンスの問題を軽減できますが、実際には他の場所に問題があります。
(ICMPではなくHTTPトラフィックからの)平均RTTはいくつですか?ディスクI/Oはどのくらいありますか?メモリプロファイルはどのように見えますか?静的コンテンツを提供しているだけですか?そうでない場合は、コンテンツの生成に他に何が関係していますか?サーバーに出入りするネットワークトラフィックを監視して、予期しないものがないかどうかを確認しましたか?発行されたキャッシュ命令を監査しましたか?