23
2025
06
23:29:40

紧急!磁盘持续100%负载? linux系统 3秒定位

磁盘爆了,怎么快速定位?

磁盘满负载运行可能会导致服务器反应迟缓、数据操作报错,甚至服务中断。如何快速定位问题源头?本文将以实际案例为指导,教大家使用 iotop 工具来快速锁定“作妖”进程。

图片

一、磁盘负载为何重要?

磁盘 IO(输入/输出)是系统性能的重要支柱之一。当磁盘负载过高时,CPU可能会被大量IO任务拖慢,导致整体性能下降。因此,快速定位并优化磁盘负载尤为关键。

二、什么是 iotop?

iotop 是一款专为监控磁盘 IO 的小工具。它类似于 top 工具,但专注于显示哪些进程在占用磁盘读写,通过它可以快速排查系统中“高消耗磁盘 IO”的元凶。
使用 iotop 的前提是你的系统支持内核中的 I/O 计数器(2.6.20 或以上的内核版本)。

在基于 Debian、Ubuntu 系统中,可以运行以下命令安装:

sudo apt-get install iotop

在基于 CentOS、RHEL 系统中,可以运行:

sudo yum install iotop


三、使用 iotop 分析案例

下面将通过几个常见场景,介绍如何高效使用 iotop:

场景1:实时查看磁盘 IO 消耗

运行以下命令查看系统中实时 IO 消耗:

sudo iotop

执行后,你将看到如下界面:

图片

Total DISK READ:  1.50 M/s | Total DISK WRITE: 2.30 M/s  
TID  PRIO USER      DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND  
1247 be/4 root      0.00 K/s   120.00 K/s   0.00 %    3.00 % python3 script.py  
1951 be/4 mysql     1.50 M/s   1.00 M/s     0.00 %    25.27 % mysqld
1012 be/4 www-data  0.00 K/s   200.00 K/s   0.00 %    0.72 % php-fpm

如上示例,mysql 进程是主要的磁盘 IO 消耗者,占用了 1.50 M/s 的读取和 1.00 M/s 的写入。

场景2:仅显示高 IO 占用进程

如果想只查看正在占用磁盘 IO 的进程,可运行:

sudo iotop -o

命令输出示例:

图片

TID  PRIO USER      DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND  
1951 be/4 mysql     1.50 M/s   1.00 M/s     0.00 %    25.27 % mysqld  

与无参数命令不同,这里仅显示当前实际产生磁盘 IO 的进程,大大简化了界面,方便快速定位。


场景3:指定时间的磁盘 IO 日志

有时系统问题并非实时发生,而是在某段时间内累积的结果。此时可以使用 iotop 的批量模式:

sudo iotop -b -n 10 > iotop.log

解释:

  • -b:启用批量模式,将结果以文本打印到终端。
  • -n 10:设定运行次数,输出 10 个时刻的结果。

查看输出日志(iotop.log):

10:00:03
Total DISK READ:  1.60 M/s | Total DISK WRITE: 0.90 M/s  
TID  PRIO USER      DISK READ  DISK WRITE  COMMAND
1247 be/4 root      0.00 K/s   120.00 K/s   python3 script.py  
...  

你可以根据特定时间点的结果分析磁盘 IO 消耗规律。

通过以上场景和操作,我们可以快速定位磁盘 IO 消耗的核心进程,进一步采取针对性优化措施,例如优化数据库查询、检查异常脚本等。iotop 的操作简单直接,非常适合运维和开发在问题初步分析时使用。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/11796.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: