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

 

 

 

コメント