问题现象
响应慢:SSH命令执行卡顿,网站或API访问缓慢、超时。
指标高:CPU、内存、磁盘I/O监控持续超过80%。
服务中断:关键进程被系统终止(OOM),实例自动重启。
无法登录:SSH连接被拒绝。
问题原因
程序问题:应用代码存在性能瓶颈或内存泄漏。
流量突增:并发访问超出实例处理能力。
I/O瓶颈:磁盘读写达到饱和,CPU大量等待(
iowait高)。
解决方案
步骤一:使用htop快速定位异常进程
通过VNC连接登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。
安装并运行htop。
sudo yum install -y htop htop在htop界面中分析。
找CPU消耗高的进程:按
F6键,选择PERCENT_CPU降序排序。找内存消耗高的进程:按
F6键,选择PERCENT_MEM降序排序。
步骤二:使用sar工具全面诊断资源瓶颈
当htop定位到现象后,使用sar获取量化数据,确认瓶颈是CPU、内存还是I/O。
安装并启用sysstat。
sudo yum install -y sysstat systemctl start sysstat && systemctl enable sysstat执行专项分析。
分析CPU(
sar -u):确认CPU时间花费在哪。# 每秒采集1次,共采集5次 sar -u 1 5%user高:应用程序问题。%system高:内核或I/O调用频繁。%iowait持续大于20%:瓶颈在磁盘I/O。
分析系统负载(
sar -q)衡量系统繁忙程度。# 每2秒采集1次,共采集5次 sar -q 2 5ldavg-1大于CPU核心数:系统已过载。runq-sz高:较多进程在排队等待CPU。
分析内存与交换(
sar -r和sar -W):判断内存是否耗尽。# 分析内存使用 sar -r 1 3 # 分析交换活动(Swap) sar -W 1 3pswpin/s或pswpout/s持续大于0:物理内存不足,系统正在使用硬盘作虚拟内存,性能会下降。
分析磁盘I/O(
sar -d):定位磁盘性能瓶颈。# 每秒采集1次,共采集3次,分析具体磁盘 sar -d 1 3%util接近100%:磁盘I/O已饱和。await大于20ms:I/O请求处理时间过长。
步骤三:针对性处理与优化
高CPU消耗的业务进程:
代码优化:使用
perf(C/C++),jstack(Java)等工具定位并优化热点代码。逻辑优化:检查并修复死循环、全表扫描SQL等低效操作。
内存不足或频繁Swap:
排查泄漏:使用
valgrind(C/C++),jmap(Java)等工具分析内存泄漏。调整配置:合理配置应用的内存参数,如JVM的
-Xms,-Xmx。升级资源:升降配方式概述以增加物理内存。
高磁盘I/O:Linux系统磁盘I/O负载较高问题的排查与处理。