私はSLES10 Linuxサーバーを持っていますが、Apacheによって100%CPUに制限されることがあります。
ps ax
Apacheが最大50のApacheプロセスを生成したことがわかります。
例: ps
コマンドは、これらの各Apacheプロセスが何をしているのか教えてくれますか?
または、問題を引き起こしているWebページを確認できるようにするための他の方法はありますか?
私の/etc/httpd/conf/httpd.confファイルには次のセクションがあります。
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .example.com
Allow from 127. 192.168.1.
</Location>
したがって、 http://192.168.1.1/server-status にアクセスすると、次のようなページが表示されます。
最近のリクエスト
192.168.3.1のApacheサーバーステータス
サーバーバージョン:Apache/2.2.3(Red Hat)
サーバー構築:2009年7月14日06:04:04
現在の時刻:2010年7月17日土曜日10:20:31 CDT
再開時間:2010年7月17日土曜日10:13:12 CDT
親サーバーの生成:0
サーバーの稼働時間:7分19秒
総アクセス数:51-総トラフィック:156 kB
CPU使用率:u0 s0 cu0 cs0
。116リクエスト/秒-363 B /秒-3132 B /リクエスト
現在処理中のリクエスト1件、アイドル状態のワーカー7人
__W _____................................................................. ....。
............................................. ...................
............................................. ...................
...........................................。 ..................。
スコアボードキー:
"_"接続を待機中、 "S"起動中、 "R"読み取り要求、
「W」返信の送信、「K」キープアライブ(読み取り)、「D」DNSルックアップ、
「C」接続を閉じる、「L」ロギング、「G」正常に終了、
「私」労働者のアイドルクリーンアップ、「。」現在のプロセスなしでスロットを開く
Srv PID Acc M CPU SS ReqConn子スロットクライアントVHost要求
0-0 20715 0/2/2 _ 0.00 418 0 0.0 0.01 0.01 192.168.3.97 dit GET/server-status HTTP/1.1
1-0 20716 0/49/49 _ 0.00 128 0 0.0 0.15 0.15 192.168.3.97 dit GET/server-status HTTP/1.1
2-0 20717 0/0/0 W 0.00 0 520222374 0.0 0.00 0.00 192.168.3.97 dit GET/server-status HTTP/1.1
strace
は、特定のプロセスがシステムコールのレベルで何をしているのかを教えてくれますが、何が起こっているのかを「50フィートの視野」で見ることはできません。それを理解するには、システムが使用しているシステムコールを組み合わせる必要があります。
データベースバックエンドを備えたWebサイトがある場合は、DBMSで現在実行されているコマンドを調べることができます。おそらくこれは、Webサイトのコードのどこで負荷が生成されるかを絞り込むのに役立つ可能性があります。
それ以外の場合は、httpdデーモンの ログレベル を増やすことができます。次に、ログに詳細情報があります。
Straceのように機能しますが、ライブラリ呼び出しを伴うltraceもあります。
あなたはpsよりも情報量の多いトップを見つけるかもしれません。