PHPのfpmのシステムパフォーマンスパラメータpm.max_childrenを設定します。

1 はじめに

PHP を Apache モジュールから Fpm に変更し、数日実行したところ、突然 Web サイトが開けなくなることに気づきました。

ページ表示がタイムアウトする MySQL および Redis サービスが正常であることを確認してください。

Fpm コンテナーに入ってログを表示すると、次のエラー メッセージが表示されます。

サーバーが pm.max_children 設定 (5) に達したため、値を上げることを検討してください

2. 理由

デフォルトでは、Fpm のシステム パラメーターは次のとおりであることがわかります。

pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3

これらのパラメータについて説明します。

max_children

最大プロセス数

start_servers

起動時に起動されるプロセスの数

min_spare_servers

アイドルプロセスの最小数

max_spare_servers

アイドルプロセスの最大数

最大 5 つのプロセスでは明らかに十分ではありません。

3.解決する

システムのクラッシュを避けるために、子プロセスの数を増やしてください。

平均して、プロセスは約 35M のメモリを占有します。コンテナによって割り当てられるメモリは 1G (1024/35=29) です。メモリ不足を避けるには、より小さい数値 (ちょうど 25) を設定してください。

pm.max_children = 25
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 25

さらに、max_requests パラメータを使用して、システムのクラッシュを避けるために、特定の数のサービスの後にプロセスを再起動することもできます。

max_requests パラメータは比較的理解しやすく、何度もサービスを提供した後でプロセスが自動的に破棄され、その後システムが他のパラメータに基づいてプロセスを自動的に補充することを意味します。

これにはアルゴリズムはありませんが、サーバーへのアクセス数が多い場合は大きく、サーバーへのアクセス数が少ない場合は小さく設定してください。

pm.max_requests = 600

おすすめ

転載: blog.csdn.net/ichen820/article/details/132356406