端くれプログラマの備忘録 Apache [Apache] 一定数リクエストを処理したphp-fpmのプロセスを再起動する

[Apache] 一定数リクエストを処理したphp-fpmのプロセスを再起動する

php-fpmをずっと動かしていると、徐々にメモリ使用量が増えて、終いにはメモリを食い潰してしまう。アプリなのか、ミドルウェアなのか、どこかでメモリリークが起きているのだろうと想像できるものの、その原因を突き止めるのは難しそうだ。

メモリリークは起きて仕方ないとあきらめて、一定期間が経過したらphp-fpmのデーモンを再起動したら良いのではないか。そんなことを思ったら既にそういうオプションが用意されていた。

/etc/php-fpm.d/www.conf

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
pm.max_requests = 500

参考サイト

php-fpm の設定を理解してサイトのパフォーマンスを向上させる – Hacker’s High
https://hackers-high.com/linux/php-fpm-config/