お名前.comのVPSでDISK IOが高い php-fpm you may need to increase pm.start_servers, or pm.min/max_spare_servers

サーバー

ここしばらく、nginx + wordpressで動かしている

お名前.com VPS

のDISK IOが高いです。

たまに、以下のエラーが出て

php-fpm you may need to increase pm.start_servers, or pm.min/max_spare_servers

サーバーがダウンすることもあるため、徹底して調査してみました。

スポンサーリンク
スポンサーリンク

php-fpmのエラー you may need to increase pm.start_servers, or pm.min/max_spare_servers

まず、お名前.comのコントロールパネルからリソース状況をチェックします。

ざっとこんな感じになっています。

image

恒常的にDISK IOが高いタイミングがあります。

また、このDISK IOが高くなるタイミングでphp-fpmが応答しなくなったりします。

/var/log/php-fpm/error.log

を見てみると、こんな感じになっています。

you may need to increase pm.start_servers, or pm.min/max_spare_servers ???

うーん、要するに

pm.start_serversの値か、

または、pm.min_spare_serversとpm.max_spare_serversの値を

変更すればよいのでしょうか。

pm.start_servers とは、起動時に作成される子プロセスの数です。

pm = dynamic の場合 にのみ適用されます。

pm.min/max_spare_servers とはアイドル状態時の子プロセスの最小/最大数です。

pm = dynamic の場合 にのみ適用されます。

/etc/php-fpm.d/www.conf には以下のように書かれていました。

Default Value: pm.start_servers = min_spare_servers + (max_spare_servers - min_spare_servers) / 2

pm.start_serversのデフォルト値はこの公式のようになるようです。

取り急ぎ、/etc/php-fpm.d/www.confの設定を以下のようにしました。

pm = dynamic
pm.max_children = 300
pm.start_servers = 75
pm.min_spare_servers = 20
pm.max_spare_servers = 150
pm.max_requests = 1000

これで様子を見ます。治るとよいですが。。。

抜本的にエラーを解決できないのか?

この種のエラーは運用で設定値を上げていくしかないようです。

むやみに設定値をあげればよいというものではありません。

ハードウェアのスペックと兼ね合いになります。

Raise it until this warning disappears.
Our settings:
pm.max_children = 256
pm.min_spare_servers = 5
pm.max_spare_servers = 64
pm.max_requests = 2048

「エラーがなくなるまで値を上げろ」ね。。。

ちなみにwww.confに変な値を設定するとphp-fpmが起動しないこともあります。

これは、pm.max_childrenの値より

pm.min_spare_serversやpm.max_spare_serversの値が高いケースのエラーです。

pm.min_spare_serversやpm.max_spare_serversの値は

pm.max_childrenより低くなければなりません。

ディスクIOの行われているプロセスを特定するiotopコマンド

ところで、LinuxでDISK IOを行っているプロセスを表示するコマンドにiotopコマンドがあります。

iotopはデフォルトではインストールされていないので、yumでインストールします。

iotopコマンドを起動するには、以下のように起動します。

--onlyを入れておくと、実際にIOを行っているプロセスだけを表示するようになります。

image

こんな感じです。

これでDISK IOを行っているプロセスは特定可能です。

このサーバーの場合、

php-fpm: pool www
nginx: worker process

がディスクIOを行っていることが分かります。

まとめ

この種の問題は、運用で様子を見てみるしかないのですが、最後、どうしようもなくなったら、お名前.com VPS を上位のプランにするしかないようです。

CPUのコア数を上げる、メモリを上げる、HDDからSDDに変更する、などが効果的なんでしょうか。

さくらのVPSサーバー

↓月額685円からの低価格&高パフォーマンスのVPS、さくらのVPSはコチラ

SSDプランが月々685円から使える!さくらのVPS