我从常见的LAMP堆栈(Linux + Apache + MySQL + PHP)切换到 nginx + PHP-FPM主要是因为速度。速度提升是令人难以置信的 - 没有测量但看起来像是一个项目使用Zend(旧库)和Zend 2(新应用程序)用于后端和Bootstrap + CoffeeScript + Backbone.js在前端网站渲染速度提高2到3倍!
唯一的缺点是调用了太多并发AJAX请求的页面。大多数情况下,一个页面最多会调用5个不同的AJAX请求来加载渲染数据,但很少需要10到20个并发请求。在这种情况下,与在Apache上渲染相比,渲染速度减慢了2到4倍(现在只能在两个不同的服务器上进行比较,而运行Apache的那个服务器较旧且整体速度较慢 - 但它可以渲染具有许多并发AJAX请求的页面更快。)
这是我的PHP-FPM配置(关于池管理器):
pm = dynamic
pm.max_children = 20
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
将pm.max_children
增加到40
似乎对速度似乎没有任何影响,但在从默认值5
更改为当前20
后,我可以看到一些速度增加。
我还将nginx的worker_processes
增加到值4
(核心数),同时将worker_connections
保持在默认1024
值。
为了使更多并发AJAX请求的页面运行得更快,还有什么我应该改变的吗?