Wordpress 用の Apache/MySQL/PHP のチューニング

Wordpress 用の Apache/MySQL/PHP のチューニング

Apacheプロセスがなぜメモリを大量に消費しているのかを解明しようとしています

私のスライスの仕様 (1.5GB RAM、CentOS 5、Apache2、PHP 5.2、MySQL)

ご覧のとおり、上位のプロセスがメモリ全体のほぼ半分を消費しており、さらに多くのプロセスが生成されると、サーバーはほぼ停止し、頻繁にスワップに移行してクラッシュします。

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND   
6817 apache    40   0  296m 103m 3920 S  0.0  6.7   0:03.52 httpd                         
6789 apache    40   0  295m 101m 3932 S  0.0  6.6   0:07.04 httpd                         
6765 apache    40   0  284m  91m 3948 S 55.1  5.9   0:12.45 httpd                         
6798 apache    40   0  284m  90m 3944 S  0.0  5.9   0:05.49 httpd                         
6542 apache    40   0  283m  90m 3956 S  0.0  5.8   0:43.25 httpd                         
6827 apache    40   0  283m  88m 3796 S  0.0  5.7   0:01.83 httpd    

Apache (および PHP) が大量のメモリを消費する原因について、何か心当たりのある方はいらっしゃいますか?

              total       used       free     shared    buffers     cached
Mem:          1545        827        718          0          3        111
-/+ buffers/cache:        713        832
Swap:         3071        103       2968

答え1

ほぼ間違いなく mod_php を実行しているため、mpm_prefork で apache を実行している可能性が高くなります。

負荷によってスワップが開始されるまでパフォーマンスが概ね問題ない場合、簡単な解決策は Apache の MaxClients を絞り始めることです。Apache がいつでもワーカー プロセスをフォークできる場合、負荷がかかるとスワップが開始されます。ワーカーが利用可能になるまでリクエストはキューに入れられるため、処理速度は低下しますが、スワップによる死ほど遅くはありません。

本当に厳密に調整する必要がある場合は、prefork apache mpm の使用をやめることを検討してください。つまり、PHP を FastCGI として実行します。PHP を FastCGI で実行する場合は、より優れた FastCGI プロセス マネージャー (--enable-fpm 構成オプション) を備えた PHP 5.3.3 へのアップグレードを検討してください。

php-fpm/worker は、旧式の mod_php よりもはるかにメモリ効率に優れています。PHP プロセスの数とは関係なく、Apache プロセス/スレッドの数を調整できます。また、メモリを大量に消費する PHP プロセスは、PHP 駆動型コンテンツの提供にのみ使用され、静的ファイルの提供には無駄になりません。

答え2

PID  USER   PR NI VIRT RES  SHR  S %CPU %MEM TIME+   COMMAND
6817 apache 40 0  296m 103m 3920 S 0.0  6.7  0:03.52 httpd
6789 apache 40 0  295m 101m 3932 S 0.0  6.6  0:07.04 httpd
6765 apache 40 0  284m 91m  3948 S 55.1 5.9  0:12.45 httpd
6798 apache 40 0  284m 90m  3944 S 0.0  5.9  0:05.49 httpd
6542 apache 40 0  283m 90m  3956 S 0.0  5.8  0:43.25 httpd
6827 apache 40 0  283m 88m  3796 S 0.0  5.7  0:01.83 httpd

Apache で実行されているのは WordPress だけですか? 最も気になるのは、PID 6765 の CPU 使用率が非常に高いことです。何が起きているのか不思議です。mem%s に関しては、各スレッドが実際には複数のワーカーを実行しているため、Web アプリケーションの設定では非常に正常なようです。

Apache に使用している MPM は何ですか? また、どのように設定していますか?

また、ターミナルダンプを投稿する場合は、各行を 4 つのスペースで始めてください。これにより、フォーマットが保持されます。

答え3

私の水晶玉は少し埃っぽいですが、あなたはメモリキャッシュおよびその PHP 拡張機能。その場合は、本当に必要な場合を除いて無効にしてみてください。

もう一つの可能​​性は、次のようなオペコードキャッシュがあるということです。Xキャッシュをインストールし、大量のメモリを使用するように設定しました。

試してみるといいでしょう

pmap -x `pidof apache`

メモリを消費しているものを確認します。

答え4

未使用の Apache モジュール (Python、Perl など) をロードしないでください。

eAccelerator PHP モジュールを使用します。これは PHP コンパイラです。実行速度が速くなり、メモリ使用量が少なくなります。

他のユーザーも正しいかもしれません。

関連情報