カテゴリー
Linux

1 コア cpu のマシン向けに php-fpm 設定して、本サイトは落ちなくなった

抱えていた問題

WordPress の [データベース接続確立エラー] を解消した記録 – oki2a24 のおわりににて書いた通り、本サイトは2020年6月5日現在 AWS Lightsail の1番低いスペックのマシンにホストしています。

それで、よくサイトが落ちてしまっていました。これを、なんとか解決しました。

やったこと

を読んで php-fpm の設定を変更しました。

dynamic のほうが柔軟に処理能力を調整することができるので、より良いようにも思えます。しかし、プロセスはリクエストの処理中CPU1コアを占有するので、同時処理可能なリクエスト数はCPUの論理コア数に依存します。(コア数以上にプロセスを起動しても、使い切れないことが多いです)それに対して、1プロセスあたりのメモリ消費量は100MBを超えることはほぼありません。

ホストしているサーバは、 1 コア CPU です。なので、 dynamic にする必要もなさそうで、 static で充分そうです。 pm = dynamic から pm = static へと変更しました。また、 dynamic の時のみ有効となる他の設定について、そのままでも良いのですが、あえてコメントにしました。

サーバーのリソースで賄い切れる範囲内で最大の値を設定するべきです。(CPUのコア数を超えるプロセス数を起動しても同時に実行することはできません。また、メモリ消費量が多すぎるとswap領域を使うようになり、かえって逆効果になります。)

サーバの CPU コア数が 1 なので、同時に実行できるプロセス数は 1 となります。よって、 pm.max_children は未変更の 50 から 1 へと変更しました。

プロセスの肥大化で触れた通り、多くのリクエストを処理すると、プロセスで使用するメモリがどんどん増大していくことがあります。

これを防ぐために、一定数リクエストを処理したプロセスを自動で再起動させることができます。この設定では、そのリクエスト数を指定します。

1 日に 1 回プロセスを再起動するように目指しました。これに必要なのが、 1 日あたりのサイトアクセススです。現在、大体 1500 ~ 2000 程度ですので、 pm.max_requests のコメントを外し、 1500 を設定いたしました。

おわりに

設定から数日経ちましたが、設定反映以降、サイトは落ちていません。

一方で、サイトをウェブブラウザから操作しているときに少しもっさりするようになった気がいたします。

しばらく様子を見て、落ちなければそのまま継続したいと思います。

サイトのレスポンスを落として壊れないようにした、というのが、今回行ったこととなりました。

以上です。

コメントを残す