(坏)nginx + php-fpm优化(由我们的提供者完成)审查

我问我们的托pipe服务提供商在我们的托pipe服务器上进行nginx + php-fpm优化。 我得到了这个答案:

嗨,没有太多的优化可以在Nginx内完成,因为它是线程化的,并不使用许多资源。 我检查了你的phpconfiguration,发现内存限制是128M,pm.max_children是50.这意味着PHP可以在2G服务器上使用高达6.5G的内存。 我已经将max_children减less到了15,以便服务器不能耗尽内存。 你想让我在你的其他服务器上这样做吗?

首先我想在nginx中有很多可能的优化,比如我读过这篇文章http://www.softwareprojects.com/resources/programming/t-optimizing-nginx-and-php-fpm-for-高交通网站-2081.html,并检查是否至less有一些优化应用,基本上都没有。

另外我觉得有很多可能的PHP-Fpm优化(例如在这篇文章中http://www.if-not-true-then-false.com/2011/nginx-and-php-fpm-configuration-and – 优化提示和技巧/ )。 再一次,基本上没有一个是适用的。

上面的文章中提到的优化有用吗?

最后,我认为由于2GB内存和128MB memory_limit最多可以使用15个孩子的逻辑是完全的废话,因为通常一个php-fpm线程在我们的应用程序中占据了30MB左右。 所以,我应该从平均使用量来计算最大的孩子数量,对吗? 此外,如果我只有一个单一的应用程序在networking服务器(和数据库是不同的一个,没有其他服务正在运行在这台机器上),我可以使用静态数量的PHP-FMP线程,我可以吗?

那个人做的一切都对,我不明白你为什么说这是“坏”的。 您的性能问题很可能存在于您的代码中,并且系统pipe理员无法修复蹩脚的代码。 你需要分析你的代码,看看瓶颈在哪里。 一旦完成,问题得到解决,您可以启用OPCache来提高性能。

关于你链接的文章(第二个链接被打破),唯一真正相关的事情是使用UNIX套接字而不是TCP与PHP-FPM对话; 其他一切都不会影响PHP响应时间(我并不是说它不会影响服务器的整体响应时间,但启用GZip不会奇迹般地让您的应用程序的数据库查询更快地响应)。

系统pipe理员告诉你的不是无稽之谈。 根据您的测量,该应用程序可能只能使用30 MB,但考虑到PHP内存限制设置为128MB,意味着没有任何东西阻止其使用超过30MB,一旦发生这种情况,服务器开始交换和/或内存不足这是灾难恢复时间,因为用户尖叫,他们无法连接到您的应用程序。

另外,请发布nginx.confphp-fpm.conf ,我会用一些新的信息更新我的答案。