试图找到瓶颈……6 万名现场访客

试图找到瓶颈……6 万名现场访客

我知道这会很难,但我愿意尝试问答方式。

我有一个 Wordpress 网站,目前该网站同时有 60,000 名访问者。

我正在使用 EC2 m3.xlarge、、、php/php-fpm 5.5.10nginx 1.4.7php-apc

对于缓存插件,我使用 WP-Super-Cache。

我注意到响应时间非常慢,有很多502错误,而且......我的 nginx 日志中有很多类似这样的错误:

10319#0: *57132 connect() to unix:/tmp/php5-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream

我很困惑瓶颈到底是什么......

  • 我有 4 个 CPU 核心,每个核心的负载大约为 15%... 总负载平均值为 .85-1 恒定
  • 16GB 中已使用约 4GB
  • RDS CPU 使用率为 60%,读写延迟较低

对于我的设置...我基本上用尽了我所有的知识+数小时的谷歌搜索......

  • php-fpm 的最大子节点数为 100
  • 4096 用于 backlog 和 somaxconn
  • nginx:worker_rlimit_nofile 200000
  • nginx:worker_进程 8
  • nginx:worker_连接数 32768

我不知道这些是否太高或太低,我已尽我所能进行调整......

我甚至不知道如何找到问题所在。当我查看慢速日志时,它只是很多随机的东西,可能是因为一切进展缓慢......不只是一件事。

答案1

一些监控和绘图工具将有助于确定瓶颈的位置。我们使用http://munin-monitoring.org/ Munin 从大多数已知服务以及系统指标中获取统计数据,并且它在现代发行版上几乎可以开箱即用。

答案2

我认为pm.max_children = 100对于 6 万名并发访问者来说这个数字太小了。即使访问者平均每分钟只点击一次链接,你也需要在一秒钟内产生 1000 次页面浏览量 ( 60000/60)。

您有 12GB 未使用的内存 — 例如设置pm.max_children = 500。可能甚至更高 — 取决于生成平均请求所需的 RAM 量。观察 RAM 使用情况并相应地调整子项的数量。

答案3

当您只有 4 个核心时,您使用了 8 个 nginx worker_processes 8?我建议使用 3 个,然后将剩余的 CPU 核心用于其他机器任务。

相关内容