深入理解 PHP-FPM 配置中的 max_requests 参数:它是什么?如何设置?在 PHP-FPM 的池配置文件(通常位于 /etc/php/版本号/fpm/pool.d/www.conf)中,有一个关键参数叫 max_requests,它定义了每个 PHP-FPM 子进程在被终止之前,最多能够处理的请求数量。

当一个子进程处理完指定数量的请求后,它会自动终止并退出,同时一个新的子进程会立即启动并接管工作。你可能会问,为什么要这样设计?原因其实很简单:长时间运行的子进程容易积累内存泄漏,导致内存占用持续攀升。通过定期重启子进程,可以有效地控制内存泄漏问题,保持服务器稳定运行。
举个例子,将 max_requests 设置为 500 或 1000,意味着每个子进程在完成相应数量的请求后就会被回收,内存泄漏的风险也因此被控制在一个合理的范围内。以下是一个典型的动态进程管理配置示例:
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
在这个配置示例中,max_requests 被设定为 500,每个子进程处理完 500 个请求后就会主动退出,让新的进程接手后续任务。这被广泛认为是生产环境中一项稳妥的最佳实践,有助于平衡性能与内存稳定性。
