タイトル通りなのですが、一応解決(?)というか前よりはマシになったのでメモ書きです。というかかなりハマったので…
(fastcgiやnginx+php-fpmの構築などは割愛します。)
環境は
nginx 1.6.2
PHP 5.5.22
FPM/FastCGI + cache
Opcache v7.0.4
で、主にWordpressを利用したウェブサイトを運営しています。月間PVは大体30万くらいです
ここ数日色々弄ってふとServer monitorを見るとこんなことになっていました。CPU使用率がやけに高くまともにサイトに接続できなくなっておりました。
topコマンドで様子を見ると
php-fpmプロセスがCPUを占拠していました。
この時の www.conf はこんな感じ
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500
色々調べると pm = dynamic は pm = ondemand の方がいいやら出てきますがこの部分を変えてもうちのサーバーではあまり変化はありませんでした。
fastcgiが作ったキャッシュへのアクセスは全く問題無いのですが、php-fpmプロセスが処理をし出すと途端に重くなります。Wordpressの管理画面にアクセスすると体感でよく分かります
php-fpmのUnixソケット通信の問題? → 127.0.0.1:9000 に変えても変化なし
ということはOPcacheが効いてない?
$ php -v
PHP 5.5.22 (cli) (built: Feb 18 2015 17:54:45)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
with Xdebug v2.2.7, Copyright (c) 2002-2015, by Derick Rethans
動いてる
$ vim /etc/php.d/opcache.ini
opcache.enable=1
ちゃんと1 になっている。
うーん
そしてふと気づいた
with Xdebug v2.2.7, Copyright (c) 2002-2015, by Derick Rethans
...
まさか
デバッグ状態で動いていました。というか普通にインストールしただけなはずなんですけどね…なぜか with Xdebug v2.2 ~ が。原因はこれっぽい?
$ vim /etc/php.d/xdebug.ini
zend_extension=xdebug.so
xdebug.remote_autostart=0
xdebug.remote_enable=0
xdebug.profiler_enable=0
0にして保存。
サーバーをリロードしてみましたが…変わりません。
$ vim /etc/php.d/xdebug.ini
;zend_extension=xdebug.so
xdebug.remote_autostart=0
xdebug.remote_enable=0
xdebug.profiler_enable=0
;zend_extension=xdebug.so
強制的にコメントアウト!
with Xdebug が消えた
php-fpm -t && service php-fpm reload
nginx -t && service nginx reload
すると
.
..
...
....
!
,. -‐==、、
,. ===、、 o ○o. i :::ト、
,/ `ヾ´´ヽ、 ゚ .l :::ト、\イヤッッホォォォオオォオウ! // .::::/ :::::!===l :::|ス. ', /./ .::::/ ::::l | __ ..... _::::|} ヽ l-、 . ,ィク ,'..__ .::::/ ::::l :l '´ `)'`ヽ ヾ;\ /::{゙ ヽ、 `
丶、;/‐‐- 、::::l `'::┬‐--< } ./;:::::\
/::::::::! ,>---‐'゙ー- ...__)イ ,. -‐‐-、ト、 |l::ヽ /;';';';';::::\
. /|::::::;';';'\/} (ヽ、 _/| (´ _,.ィ!::ヽ. ヾー'´;';';';';';';';';:: /ヽ、
…けどまだ高いような気もする
が、頭打ちになるよりはいいので一応このまま様子見…
何か他に原因があるんだろうか