お名前.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

まず、お名前.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に変更する、などが効果的なんでしょうか。

最後まで読んでいただきありがとうござました。
この記事が気に入っていただけたらシェアしてくれると嬉しいです。

スポンサーリンク
スポンサーリンク
Translate »