一个上线运行正常的项目,突然出现卡顿负载问题,如何排查,突然的异常,大多数来自近期的某些操作引起,而这些一般通过几步就能定位到问题点。
确认系统负载状态
使用 top 或 htop 实时查看系统资源的使用情况,包括 CPU、内存和 I/O 等,并显示哪个进程占用了最多资源(推荐使用htop 体验更好)。
确认负载飙升问题来自内部还是外部
内部追查最近的更新,包括,程序更新,软件更新,系统更新,
外部确认服务是否被 DDoS 攻击或高频请求。
查看日志系统是否有异常日志
其他相关追查命令:
-
mpstat:查看多核 CPU 的使用情况,识别是否有某个核的使用率特别高。
-
pidstat:可以按进程详细分析 CPU 使用情况,例如 pidstat -u 1 查看每秒的 CPU 使用率。
-
vmstat/iostat: 查看系统是否因为大量中断导致 CPU 过载。
-
free -m:检查内存使用情况,查看是否有大量内存被使用,尤其是 swap(交换分区)是否在频繁使用,可能会拖慢系统。
-
smem/pmap:可以检查进程的详细内存使用情况,尤其在需要分析进程内存分布时。
-
iftop/nload 等工具查看网络流量,关注是否有单一 IP 或某些 IP 段在短时间内消耗大量带宽
-
ss -s 可以查看系统的 TCP 和 UDP 连接统计情况