首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP5-FPM静态、动态还是按需?

PHP5-FPM静态、动态还是按需?
EN

Stack Overflow用户
提问于 2015-03-18 06:56:35
回答 2查看 17.8K关注 0票数 17

我有一个Nginx + PHP5-FPM服务器,几乎没有高流量的网站。

根据我对PHP5-FPM池配置的理解,我了解到:

static =可用于立即创建N个子进程,因此它们不需要打开/重新打开,它们已经打开并可以在需要时使用,否则它们是“睡眠”。

dynamic =可用于打开有限数量的子进程,然后在达到限制时重新生成(最小/最大服务器数)。

ondemand =i指定要创建的子进程的最大数量,然后在需要时按需创建子进程,并在不再需要时关闭子进程,从而保持较低的内存使用率,但会增加几毫秒的响应时间。

从我对一个高流量的WordPress网站的测试中,我注意到:

如果我使用"static",网站肯定会更快,并且可以立即处理大量的并发连接,但内存总是会增加它的使用量,并且在N个小时后,它似乎使用了几乎所有可用的RAM。因此,我必须使用cronjob定期(每隔1小时)使用/etc/init.d/php5-fpm重新加载PHP5-FPM。

如果我使用“动态”,它使用较少的RAM,但在N个并发连接之后,经常会出现502个错误(但可能是我配置得不好)。

如果我使用"ondemand“,站点会稍微慢一点(比如+50/100ms的响应时间),但它可以处理所有的高流量,而不需要使用太多的RAM。

因此,我个人的结论是,就低/可控内存使用量而言,"ondemand“确实是最好的方法,唯一的缺点是响应时间+50/100ms,但在我的情况下,这不是一个大问题。

我的假设是正确的吗?

EN

回答 2

Stack Overflow用户

发布于 2016-09-29 01:20:36

您没有提到为什么要保持较低的内存。假设这台机器专用于为PHP-FPM提供服务,那么保持较低的内存对应用程序没有任何帮助。你有内存,就用它吧。

因此,在这种情况下,“静态”是最好的选择,将max_requests设置为可以控制内存泄漏(如果有)的值。

如果这台机器与其他任务共享,那么保持较低的内存是理想的。在这种情况下,“动态”是速度和内存使用之间的最佳折衷。

只有当PHP-FPM引擎不经常使用,并且机器的主要用途是其他用途时,"ondemand“才是一个很好的选择。

票数 7
EN

Stack Overflow用户

发布于 2017-08-31 20:39:20

您可以将PHP-FPM配置为自动重启,方法是检测子进程是否在确定的时间段内死亡。

在全局配置"php-fpm.conf“中,您可以设置如果5个子进程在1分钟内死亡,则重新启动PHP-FPM,并在此之前等待10秒。

代码语言:javascript
复制
// php-fpm.conf
emergency_restart_threshold = 5
emergency_restart_interval = 1m
process_control_timeout = 10s

因此,您可以继续使用"dynamic“,而无需使用cron。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29111271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档