系统访问502状态排查思路
关于502
1、后端服务器异常,直接返回
可能的原因:PHP进程满,不接受请求
2、响应超时,返回错误码
3、502问题很多时候会反映在服务器某一部分系统性能上,因此如果通过日志解决不了问题时,通过观察系统性能是一个解决502问题的思路
一些可用于排查问题的LOG
1、access log
2、系统慢查询 log
3、数据库 log
结合以上三个 log,基本上可以确定由于程序问题导致的502
一些可用的命令
如果通过以上 log 仍然不能确定502问题的原因
可以通过以下命令,进一步观察系统状态来分析原因
系统负载
sar
09:00:01 AM CPU %user %nice %system %iowait %steal %idle
09:10:01 AM all 0.23 0.02 0.08 0.01 0.00 99.66
通过对系统负载的观察,精确确定某一时间区间,进而根据此时间范围去查看对应日志,定位问题
查看系统运行时状态
vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
推荐使用下面这个
dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
着重观察磁盘和网络部分的数据
可以通过此判断出程序是因为磁盘资源还是网络资源导致的处理速度下降,从而恶化
查看网络流量来源
iftop
图形化的 top
htop
查看多个 log
multitail
查看最后登录人
last
个人经验
1、系统swap高:可能存在大量计算,导致内存不足
2、网络流量高:可能存在大数据量传输,通过PV限速
3、CPU wait高:可能存在大量磁盘操作,网络操作,导致CPU闲置
4、磁盘读写高:可能存在大量小数据写入读出,影响整体性能,减少读写次数,以提高性能
5、某进程CPU使用率高:可能存在不合理的代码,长时间占用CPU,导致CPU负载高,进程调度受阻
6、如何判断剩余可用内存:看内存cached,基本上就是还可分配给应用的内存量
7、一些定时任务在某一时刻同时执行,造成堆积,也是导致系统性能大幅下降的原因,需要注意