WordPressのメモリ使用量をプロファイルする理想的な方法は何ですか?


8

私たちはしているWordPressのマルチサイトのインスタンスを実行している現在、30かそこらのサイトで、2台のRackspaceのクラウドサーバ上で一つのウェブと1つのデータベースを。私はNginxを静的アセットの前に置き、Apacheはすべての動的リクエストを処理します。データベースのMemcachedとPHPのAPC opコードキャッシングも構成しました。W3 Total Cacheは、すべてのサイトでデフォルトで有効になっています。

これは、1つの問題で高速です。Apacheプロセスは、通常80〜120 MBのサイズになります。Webサーバーには2 GBのメモリが搭載されています。つまり、問題が発生するまで15ほどのプロセスを取得します。プロセスは明らかにそれほど大きくあるべきではありませんが、なぜそうなのかについて私は困惑しています。

何が起こっているのかを識別するための良い戦略は何ですか?

前もって感謝します!

10/10/10更新:不思議なことに、メモリの問題の解決策はPHP xdebugを無効にすることでした(構成で誤って有効にされ、ランダムなメモリ使用量の急増を引き起こしていました)。

回答:


4

あなたが話しているApacheプロセスのメモリ量(プロセスあたり80から120 MB)は2つの理由に分けることができます。

  1. Apache
  2. ワードプレス

Apache

必要な数のモジュールをロードするだけでApacheを最適化でき、メモリを削減する他の最適化の微調整も可能です。まだ最適化していない場合は、少し調整してください。

ワードプレス

Wordpressは大量のメモリを消費するだけで、まったく最適化されていません。データベースクラスをより適切に実装されたものに置き換えることから始めます。これにより、速度が向上し、メモリ使用量が大幅に削減されます。その次に私が示唆することはあまりありません。Worpdressを使用しないことは役立つとは思えません。

戦略

何が起こっているかを調べるには、WordPressリクエストが使用しているメモリの量を追跡する必要があります。memory_get_peak_usage()Worpdressメモリ使用量を監視するために使用できるピーク使用量取得関数()があります。それがあなたが書いた80-120 MBに近い場合、ワードプレスが頭痛の種を作っていることがわかります。タイムスタンプ、ピークメモリ、実行時間、リクエストされたURIをログに記録したい場合があります。

キャッシュされたワードプレスページを提供するためにNginxを使用すると、ワードプレスが読み込まれるのを防ぐことができます。これは、使用するような「インバウンド」キャッシュの場合でも同様です。これらはワードプレスプラグインであるため、概念的には壊れています。キャッシュされた結果であっても、ワードプレスの少なくとも一部をロードする必要があります。


1

ダニエル、

私はケンケイターに敬意を払いません。Apacheの前でnginxをリバースプロキシとして使用することを理解しています。Harvard Lawはこの方法で大きな成功を収めており、nginxとのインターフェースに役立つWordPressプラグインへのリンクを含む、この方法についてのすばらしい記事があります。

http://blogs.law.harvard.edu/djcp/2010/01/nginx-as-a-front-end-proxy-cache-for-wordpress/

彼らがハーバード大学の法則で発見したのは、nginxは基本的にすべてのリクエストをフロントエンドでキャッシュするため、バックエンドで他のキャッシュタイプのプラグインを使用してもパフォーマンスは向上せず、追加の複雑さの価値がないということです。この方法でnginxを使用することに真剣に取り組んでいる場合は、その経験についての記事を確認し、WPサイドのキャッシュを含む動的プロセスを削減することをお勧めします。

Apacheのアクセスログやエラーログを注意深く調べて、実際にどのような種類のクエリを動的に実行する必要があるかを調べ、そのようなケースを減らすことを試みるなど、いくつかの基本的な調査も良いスタートになるかもしれません。


0

さて、まず第一に、ApacheとNginxを使用しています-冗長です。Nginx / FastCGI w / PHPを使用する必要があります。このサイトのチュートリアルが役に立ちます。それ以外の場合は、コードへの最近の変更により、PHPの一部のバグが原因でメモリが適切に解放されないと考えられます。Apacheプロセスがそれほど多くのメモリを消費する必要がある理由はありません。

http://interfacelab.com/nginx-php-fpm-apc-awesome/

幸運を!

@kenkeiter


Nginx / FastCGIは素晴らしいですが、この問題を解決する範囲外です
Daniel Bachhuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.