LEMP Nginx + php-fpm 高负载超时然后很好


LEMP Nginx + php-fpm high load timeouts then fine

我对这一切都很陌生,但我对优化有强迫症。

我正在尝试优化我的网络服务器,为wordpress运行LEMP设置。

我正在使用 WP 超级缓存而不是 w3 总缓存,因为与我的设置相比,它似乎表现得非常出色

我正在使用 blitz.io 来测试并将 450 个用户扔到域中 60 秒,从完整的 450 秒开始。

这是我的结果:5 秒处的尖峰是错误和超时https://i.stack.imgur.com/7qDE3.png

峰值期间的 htop:https://i.stack.imgur.com/EAnjR.png

这是一个带有2个CPU的vps,在2.5Ghz和2.5GB内存,如您所见内存使用率很低。

nginx: worker_processes 1; worker_connections 1024;

php-FPM:动态,pm.max_children = 10,pm.start_servers = 2,pm.max_spare_servers = 2,;p m.max_requests = 500 默认值 = 0

我已经将nginx worker_processes增加到2,没有变化,而且我弄乱了我的php-fpm设置,没有变化。 有什么想法我应该看什么吗?

这看起来还不错。 19k 个请求中有 ~40 个超时是正常的。我得到了类似的结果。

至于调音:

  • 查看 http://wiki.nginx.org/HttpFastcgiModule#fastcgi_cache - 使用它完全避免接触PHP,而nginx会完成所有缓存。你也可以看看蝙蝠缓存(http://evansolomon.me/notes/faster-wordpress-multisite-nginx-batcache/)

  • 查看APC/MemCached的对象缓存。 这使得非缓存请求更快,后端的响应速度也更快。 APC还减少了PHP的内存占用。对于日常使用,这会产生更大的不同。如果您的许多请求不可缓存(例如,大量新评论),这也很有用。

  • 考虑使用 php5.4 它的速度要快得多,需要的内存更少

  • 启用 MySQL 查询缓存。 http://mysqltuner.com 是一个很好的小脚本来配置你的服务器。

在大多数情况下,测量峰值传输并不是可扩展性的良好指标。 真实用户的行为可能有所不同。

编辑:尝试在静态nginx页面上 blitz.io。如果仍然存在超时,则问题可能出在 blitz.io 或其他方面。同时为您的页面激活 gzip 压缩。