求助,服务器 cpu 没上去,但是 5xx 状态码持续增加

2020-04-11 11:35:42 +08:00
 cszchen

之前做的外包项目,还在维护期。使用 Laravel5.5 开发,部署在 AWS 。
目前 500 错误率有点高,3%左右。

服务器配置

用户量 /访问量

系统是给设备用的,设备会定期上报,每次上报会发起几个请求(>=2 )
最高的时候请求量是 1 分钟接近 3.5 万( CloudWatch 统计的)

目前服务器 CPU 平均使用率很低,不到 20%,数据库的使用率也是 15%左右,iops 最高 700 多(上限 3000 ), 而且目前数据库的活动会话数很低。


补充一下,php-fpm 的状态

listen queue:         0  
max listen queue:     3210  
listen queue len:     65535  
idle processes:       724  
active processes:     76  
total processes:      800  
max active processes: 801  
max children reached: 0  
slow requests:        0  
1700 次点击
所在节点    程序员
8 条回复
Vogan
2020-04-11 11:41:05 +08:00
1. 看 log 。nginx 的 log 和 laravel 的 log
2. 低负载但是 50x 很有可能 PHP 的进程数开得少,导致少数进程响应大量请求
3. 如果是 API,建议使用 lumen
cszchen
2020-04-11 12:02:57 +08:00
@Vogan 不是 API,xml 格式的,协议叫 tr069 。现在每台服务器 800 个静态进程,日志没找出什么问题。。
cszchen
2020-04-11 12:03:00 +08:00
@Vogan 现在每台服务器是 800 个进程,静态的,nginx 的日志没发现什么问题 😢
dnsaq
2020-04-11 13:09:42 +08:00
这叫负载不高,我没看懂为啥前端给 8 核 x2,数据库却给 4 核,redis 真的有用起来嘛。
dnsaq
2020-04-11 13:12:03 +08:00
上报量大就做队列
DonnyChao
2020-04-11 13:37:51 +08:00
海外服务器的话,还有可能是线路问题
v2orz
2020-04-11 13:48:04 +08:00
检查一下各个服务器的 tcp 连接状态,TIME_WAIT 和 CLOSE_WAIT 是不是很多(千 /万)
还有各种内核参数
marcolin
2020-04-11 14:02:45 +08:00
看你的 log,800 个 process 都曾经被打满了,而且有排队等候的队列( max_listen_queue )
看下响应时间的分布就清楚了,可能是请求响应的太慢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661399

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX