首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP提高性能

PHP提高性能
EN

Stack Overflow用户
提问于 2019-12-14 12:36:31
回答 1查看 2.7K关注 0票数 0

PHP 7.2 + NGINX

你好。我有一个问题-如何通过调整设置来提高php的性能。机器CPU 8c/16t,ram 64 8c。

当前设置:

pm动态

max_children 64

max_request %0

tcp套接字

我在达到max_children设置时经常遇到问题,所发生的是100%的CPU负载。我的RAM没有问题,总是使用大约22 do的内存(不仅仅是PHP,还有其他一些东西)。我一直在日志中查看以考虑设置更高的子池,但是当我已经有64个子程序的100% CPU负载时,这是否有意义呢?我只找到了如何根据内存限制计算最大子池的方法,但是CPU呢?

ps。我有一个HTTP缓存服务器,我能够通过改进缓存规则来减少负载,但我只想知道是否有比目前更好的设置。

EN

回答 1

Stack Overflow用户

发布于 2019-12-14 13:13:47

当我已经有64个孩子的100%的CPU负载时,

是否有意义?

是的,确实如此。如果您的RAM真的允许更多的工作进程,无论如何,增加它们。这将减少不必要的进程分叉(从而减少CPU的使用)。

max_request 0

这有点危险,因为它意味着第三方库中没有内存泄漏(这是可以的)。更安全的做法是将其设置为例如10000,以便在10k请求后回收工作进程。

通常,除了调优pm.max_childrenpm.max_requestspm类型之外,您对PHP的优化也无能为力。

如果您可以使用static pm,那么PHP将分配已知数量的工作进程,而且根本没有分叉。这是配置PHP的最佳方法,特别是如果您只有一个专用于PHP的服务器(这需要对max_children的理想值进行大量的实验)。

您可以大大改进的地方是使用PHP OPCache。确保它是启用的。然后使用cachetool监视是否为它分配了足够的内存。

OPCache的一个好的设置是禁用validate_timestamps,因此它将永远不会重新检查validate_timestamps文件的更改。之所以它是好的,是因为您的脚本将在“解析”状态和“从”内存中运行。因此,解析它们不会导致缓慢的磁盘读取或CPU影响,并且更接近二进制程序的运行方式。

禁用时间戳验证意味着在部署策略中使用清除OPCache。同样,cachetool在这里是有帮助的(如果git是部署的话,cachetool opcache:reset在git钩子中)。

最后,您真的需要在使用这种CPU的同时调整PHP吗?可能不会。这种CPU的使用保证了对缓存的配置,例如Varnish或NGINX Fastcgi cache或至少NGINX微缓存。

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

https://stackoverflow.com/questions/59335153

复制
相关文章

相似问题

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