Linux程序卡顿,记一次Linux系统卡顿的排查过程

1.使用w命令查看系统负载,发现系统负载很高:(该服务器只有一个CPU,load average值的意义是单位时间段内CPU活动进程数,这个值越大就说明服务器压力越大,一般情况下这个值只要不超过服务器的cpu数量就没有关系)

d268048ca936ad34567caadfe017940d.png

2.使用top命令进一步确认具体是原因导致的负载过高,执行top命令后,发现CPU这一列wa的数值很高,说明CPU资源在等待I/O,由此可以判断是因为I/O的原因导致了系统负载过高,操作卡顿。

41355a52ced2ffa6ac6a6f2a90f5fd35.png

top命令从系统面大体展示了I/O Wait,但无法确定具体是哪个磁盘正在被影响;因此需要使用iostat命令进行确认

3.使用iostate命令确认具体是那个磁盘存在I/O异常,

iostate -x 2 5  # 每2秒打印报告,共打印5次;-x参数告诉iostata打印出更详尽的报告

93c63a5d8d693444f6ea474731bcc93b.png

iostat打印出的第1个报告,数值是基于最后一次系统启动的时间统计的,即每个子报告都是基于上1次的报告,因此第一个报告应该被忽略。在这个例子中,第2份报告就是从第1份报告开始后的硬盘数据,第3份报告基于第2份,依此类推。根据第2个报告的输出可以看到,vda盘的%util数值达到了103.63%,这表示引起I/O慢的进程在写入vda盘。

4.使用iotop或者ps查找导致高I/O的进程:

查看哪个进程使用硬盘最多的最简单的方法就是使用iotop命令,虽然iotop好用,但默认主流的linux发行版中是没有安装的,可以使用yum provides */iotop 查看iotop命令是由那个rpm包提供的,使用yum安装下即可。如果无法在短时间内完成iotop的安装,还可以使用ps命令来大致确定具体是那个进程导致的I/O过高。

ps命令能打印出内存,cpu的情况但没办法打印出硬盘I/O的情况。虽然ps没办法打印出I/O的情况,但可以显示出进程是否在等待I/O。等待I/O的进程通常处于uninterruptible、sleep或D状态,通过这些信息可以大致查找出处在wait状态的进程。

for x in `seq 1 10`;do ps -eo state,pid,cmd|grep "^D";echo "---";sleep 5;done

8d7cd6b200739cde98d7042884212719.png根据命令的打印结果可以看出,进程号为123424的进程每次都会出现,说明很有可能是该进程导致的I/O过高

为了进一步确认是否是该进程导致的I/O过高,可以在/proc中找到该进程,查看它的I/O

976eca0e54c0db561124a78a646702fa.png

read_bytes和write_bytes就这个进程读写硬盘的字节数。可以看到123424这个进程已经读了2GB,写了235MB的数据。

接下来的操作,可以使用kill命令杀掉导致I/O飙高的进程(临时)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux服务器出现卡顿的情况,我们可以采取以下步骤进行排查: 1.查看系统负载:使用命令"top"或者"uptime"可以查看服务器系统负载情况,观察CPU使用率、内存使用率和I/O等指标,找出是否有任何异常。 2.检查CPU占用率:使用命令"top"或者"htop"查看是否有某个进程或者服务占用了过高的CPU资源,这可能是导致服务器卡顿的原因。 3.检查内存使用情况:使用命令"free"查看服务器的内存使用情况,确认是否有内存泄漏或者内存不足的情况。 4.检查磁盘使用情况:使用命令"df"查看服务器磁盘使用情况,确认是否有某个分区占满了导致卡顿的情况。 5.检查进程和服务状态:使用命令"ps"查看当前运行的进程和服务的状态,确认是否有异常进程或者服务运行导致卡顿。 6.查看日志文件:检查系统日志文件,如/var/log/syslog或者/var/log/dmesg,查找是否有任何错误、警告或者异常信息。 7.网络连接情况:使用命令"netstat"或者"ss"查看服务器的网络连接状态,确认是否有过多的网络连接或者异常连接导致卡顿。 8.检查硬件健康状况:如果以上排查没有发现问题,可以进行硬件检查,如查看硬盘、内存、CPU等硬件是否正常工作。 以上是一些常见的排查步骤,希望可以帮助您解决Linux服务器卡顿的问题。如果问题依然存在,建议联系专业的系统管理员或者技术支持来协助解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值