之前做的外包项目,还在维护期。使用 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
1
Vogan 2020-04-11 11:41:05 +08:00 via iPhone
1. 看 log 。nginx 的 log 和 laravel 的 log
2. 低负载但是 50x 很有可能 PHP 的进程数开得少,导致少数进程响应大量请求 3. 如果是 API,建议使用 lumen |
2
cszchen OP @Vogan 不是 API,xml 格式的,协议叫 tr069 。现在每台服务器 800 个静态进程,日志没找出什么问题。。
|
4
dnsaq 2020-04-11 13:09:42 +08:00 via iPhone
这叫负载不高,我没看懂为啥前端给 8 核 x2,数据库却给 4 核,redis 真的有用起来嘛。
|
5
dnsaq 2020-04-11 13:12:03 +08:00 via iPhone
上报量大就做队列
|
6
DonnyChao 2020-04-11 13:37:51 +08:00
海外服务器的话,还有可能是线路问题
|
7
v2orz 2020-04-11 13:48:04 +08:00
检查一下各个服务器的 tcp 连接状态,TIME_WAIT 和 CLOSE_WAIT 是不是很多(千 /万)
还有各种内核参数 |
8
marcolin 2020-04-11 14:02:45 +08:00
看你的 log,800 个 process 都曾经被打满了,而且有排队等候的队列( max_listen_queue )
看下响应时间的分布就清楚了,可能是请求响应的太慢 |