加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用php-fpm和nginx进行奇怪的性能波动

发布时间:2020-12-13 13:56:38 所属栏目:PHP教程 来源:网络整理
导读:我正在对Web服务进行负载测试.这是一个运行在php-fpm和nginx上的php应用程序,带有fastcgi.有一个 MySQL后端仅用于小型读取. 总是,我看到一种奇特的模式:性能稳定并且随着流量的增加而可预测地增加,但随后它在峰值时变得不稳定:CPU使用率不断波动. 这是我看
我正在对Web服务进行负载测试.这是一个运行在php-fpm和nginx上的php应用程序,带有fastcgi.有一个 MySQL后端仅用于小型读取.

总是,我看到一种奇特的模式:性能稳定并且随着流量的增加而可预测地增加,但随后它在峰值时变得不稳定:CPU使用率不断波动.

这是我看到的性能模式(用nmon可视化):

下降总是与我的负载测试工具 – locust.io – 在完成升级到我为测试设置的峰值水平时所具有的短暂暂停一致.

我的假设:在这个短暂的时刻,php-fpm主人认为负载已经消失并开始杀死工人;当流量在一段时间后全面恢复时,它无法快速响应.

我不太明白的原因是为什么它永远无法重新回到原点:我在负载均衡器后面的所有4个应用服务器上无限期地看到这种波动.

这是我的php-fpm池配置:

[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 100
pm.start_servers = 40
pm.min_spare_servers = 40
pm.max_spare_servers = 100
pm.max_requests = 10000

我已经确认这不是数据库的问题 – 在看到MySQL读取从属数量增加一倍之后,我看到了完全相同的行为.

是什么造成的?我怎么能阻止它?

编辑:

这是一张图表,展示了我所看到的.请注意,失败率通常会随着user_count达到峰值而出现峰值,然后逐渐降低.

你的记忆管理怎么样?最后几周,我做了一些模拟测试,并将一台服务器带到了极限.我看到了很多内存的变化.在我的情况下,大量数据被带入交换而不是RAM来处理负载.经过一次测试后,我得到了一个真正奇怪的结果,没有使用任何RAM,完成所有内容都进入交换.也许这就是以下请求放慢速度的原因.

这是一个示例图像,我的交换在负载测试后的样子

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读