PHP-FPMの総メモリ使用量を制限する

PHP-FPMの総メモリ使用量を制限する

私は Debian サーバーで PHP-FPM を実行しています。質問はメモリ使用量についてです。PHP 内では memory_limit のみ設定できますが、一部のリクエストではこの値が低すぎることはありません。また、PHP-FPM ではプロセス数のみ設定できますが、大量の PHP リクエストを実行しているため、この値も低すぎることはありません。

ほとんどの場合、プロセスは 2 ~ 20 MB 程度しか使用しません。プロセス制限は 512 なので、約 5 ~ 10 GB の RAM になります。ただし、一部の PHP スクリプトはより多くのメモリを使用する可能性があるため、最大許容メモリは約 1 TB (512 プロセス * 2048 MB) です。また、問題が発生した場合、Debian OOM Killer はランダムにプロセスを強制終了します。

php-fpm の合計メモリ使用量を制限する方法はありますか? たとえば、合計 RAM が不足しているために php-fpm がそれ以上プロセスを生成しないようなハード制限などです。

答え1

数日前にも同じような問題が発生しました。php5-fpm マスターがいくつかプロセスを生成しすぎたのです。OOM Killer は nginx を強制終了することで大いに役立ちました。

私が見つけた解決策としてcグループメカニズムメモリサブシステムこれにより、すべての FPM プロセスを 1 つのグループにまとめることができ、そのグループはシステム RAM の 60% などに制限されます。

素晴らしいドキュメント: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/リソース管理ガイド/ch-Using_Control_Groups.html

関連情報