我在专用服务器中使用 ubuntu 15.04,该服务器有 40 个 CPU 核心和 160GB RAM,运行一个流量很大的 wordpress 网站。我使用 Nginx 作为 Web 服务器,使用 varnish 作为缓存服务器。我的 php5-fpm.conf 设置如下:
listen = 127.0.0.1:7654
pm = dynamic
pm.max_children = 500
pm.start_servers = 80
pm.min_spare_servers = 20
pm.max_spare_servers = 160
pm.max_requests = 1000
但它仍然显示错误:
[pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 17 idle, and 92 total children
WARNING: [pool www] server reached pm.max_children setting (200), consider raising it
我尝试增加数字,但仍然没有成功。一个孩子使用的记忆力接近~75MB. 我怎样才能找出我的 php 的最佳配置?
答案1
总的来说,我发现在“按需”模式下使用 php-fpm 是最好的解决方案。这似乎更节省内存,更不容易发生内存泄漏,而且可扩展性更强。建议如下:
pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s
pm.max_requests = 500
max_children 需要根据你的环境进行调整。它与内存有很大关系,例如,如果一个 FPM 进程将消耗 64MB,而你只有 2GB 内存,那么在你开始受到内存限制之前,你只能获得 20-25 fpm 进程。
因此,请根据您的内存计算此值,如果这不是专用的应用程序服务器,请为操作系统和其他服务留出一些空间。
答案2
专用服务器,配备 40 个 CPU 核心和 160GB RAM,运行一个流量很大的 WordPress 网站
对于这样的服务来说,这是一个非常奇怪的配置。
我们无法建议如何修复该问题,因为您没有告诉我们问题是什么。最有可能的是,一名称职的工程师至少需要一天的时间来收集足够的数据来确定瓶颈,然后再花更长时间找出解决约束的最佳方法。在这里发布如此大量的研究作为问题会偏离主题。
容量规划是无关。
我怎样才能找出我的 php 的最佳配置?
了解性能管理和调优。对原因做出有根据的猜测。应用增量更改。衡量影响。