web-dev-qa-db-ja.com

CPU負荷の高いhttpdプロセスを作成しているページを確認するにはどうすればよいですか?

カスタマイズされたWordpress + bbPressの組み合わせを実行するLAMPサーバー(2GB RAMを搭載したCentOSベースのMediaTemple(DV)Extreme)があります。

1日あたり約3万ページビューで、サーバーはうめき始めています。交通量の流入があったとき、それは今日約5分間つまずきました。通常の状態でも、仮想サーバーのCPU負荷が90%以上になることがあります。 Topを使用すると、それぞれ15〜30%(場合によっては50%)のCPUを使用している5〜7個のhttpdプロセスをよく目にします。

大きな最適化パスを実行する前に(MySQLの使用が原因である可能性があります)、主な違反者であるページを見つけて、最初にそれらに対処したいと思います。 CPUを最も消費するhttpdプロセスの原因となった特定のリクエストを見つける方法はありますか?最適化全般に関する多くの情報を見つけましたが、この特定の質問については何も見つかりませんでした。

第二に、100万の変数があることを私は知っていますが、このサイズのサイトを持つ単一の専用仮想サーバーでパフォーマンスの境界にあるべきかどうかについての洞察があれば、私はあなたの意見を聞いてみたいです。より強力なサーバーへの移行を検討する必要がありますか、それとも現在のサーバーでの最適化に焦点を当てるべきですか?

5
Greg

straceは、この種の問題のデバッグを開始するための良い方法です。より多くのCPUを消費するApacheプロセスの1つのpidをstraceしてみてください。

strace -f -t -o strace.output -p PID

これにより、そのプロセス内で行われたシステムコールが表示されます。 strace.outputを見て、プロセスが何をしていたかを確認してください。これは道を啓発し、プロセスがどこにぶら下がっているのかを示すかもしれません。 「-t」フラグは、strace出力の各行の前に時刻を付けるため、ここでは非常に重要です。だから、飛躍を探します。

一方、MySQLがおそらく原因だと思うので、遅いクエリログを有効にして、それを見て、そのクエリを最適化しようとします。遅いクエリログに関する詳細 ここ

また、Webサーバーのログファイルも確認することを忘れないでください。

2番目の質問については、この情報だけではわかりにくいと思います。フロントエンド(Webサーバー)をバックエンド(データベース)から分離することは、予算がある場合は常に良い習慣です。一方、ハードウェアを追加する前に、現在のハードウェアを使用してパフォーマンスを最適化することに集中する必要があると思います。そうでなければ、問題はおそらく延期されているだけです。

お役に立てれば。

7
Marco Ramos

The Grinder で試してください-ボトルネックを見つけるのに役立ちます。

0
Peter Hall