当前位置: 首页 > news >正文

磁盘-IO

1.iostat

iostat [选项] [时间间隔] [次数]选项:-c:仅显示 CPU 使用情况统计。-d:仅显示磁盘使用情况统计。-x:显示详细的设备统计。-m:所有尺寸信息以 MB 单位显示。-p [设备]:显示指定磁盘分区的统计信息,没有指定设备时显示所有分区信息。-t:在输出中包含时间戳信息。-h:输出以更容易阅读的格式显示。-V:显示程序版本。
#展示所有设备的简要 I/O 信息
iostat#显示 CPU 使用率
iostat -c#显示扩展的磁盘 I/O 统计
iostat -dx#以 MB 为单位显示信息
iostat -m#显示特定磁盘分区的统计信息
iostat -p sda#设置时间间隔和次数,每2秒钟收集并报告一次系统 I/O 统计,重复5次
iostat 2 5#显示时间戳、磁盘和 CPU 的详细统计信息,时间戳的扩展磁盘和 CPU 统计信息,每2秒更新一次,共更新5次
iostat -tx 2 5
iostat -tx 2 3
Linux 4.19.91-007.ali4000.alios7.x86_64 (109d04301.cloud.d07.am11)      06/06/2024      _x86_64_        (96 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle15.34    0.00    8.96    0.02    0.00   75.68Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     5.63    0.46   19.69    57.69   136.07    19.24     0.03    1.37    0.61    1.39   0.05   0.10
nvme1n1           0.00  1557.83   86.97 1981.93  2442.73 41908.82    42.87     0.30    0.10    0.14    0.09   0.01   3.07
nvme0n1           0.00    14.70    0.23   15.02    28.95   430.81    60.31     0.00    0.07    0.35    0.07   0.06   0.09
loop0             0.00     0.00    0.11    1.07    14.43     3.35    30.09     0.00    0.54    0.09    0.59   0.09   0.01
dm-0              0.00     0.00    0.00    1.07     0.09     3.94     7.52     0.00    0.54    0.09    0.54   0.42   0.05Device:显示的是设备名,如 sd(a-z)、nvme(n) 等。rrqm/s:每秒进行合并的读请求的数量。wrqm/s:每秒进行合并的写请求的数量。r/s:每秒完成的读次数。w/s:每秒完成的写次数。rkB/s:每秒从设备(磁盘)读取的数据量(KB)。wkB/s:每秒向设备(磁盘)写入的数据量(KB)。avgrq-sz:平均每次I/O操作的数据量(扇区)。avgqu-sz:平均I/O请求队列的长度。await:I/O请求的平均等待时间(毫秒)。r_await:读请求的平均等待时间(毫秒)。w_await:写请求的平均等待时间(毫秒)。svctm:平均服务时间(毫秒)。注意,此列在新版的 Linux 内核中可能已不支持。%util:设备的利用率百分比,接近 100% 时表示设备可能已成为瓶颈。

2.排查命令

top
htop
iotop#判断哪个进程IO高
iostat -x 1
vmstat 1#查看磁盘的读写情况
lsof -p $pid#根据进程查看调用了哪些文件
ll  /dev/mapper#首先确定loop0,dm0是属于什么磁盘:ll  /dev/mapper;df -h;lsblk 通过分析发现loop0盘做了逻辑分区dm-0属于其中之一tsar -I dm-0  -i1 -l#-I dm-0:-I 选项后跟 dm-0 告诉 tsar 报告特定于块设备 dm-0 的信息。dm-0 通常是一个设备映射(device-mapper)设备,可能是 LVM(逻辑卷管理)的一部分,或者是软件 RAID 或其他高级存储特性所使用的。#-i1:-i 选项指定两次报告之间的时间间隔(以秒为单位)。在这个例子中,-i1 表示 tsar 将每1秒收集并报告一次数据。#-l:-l 选项告诉 tsar 显示实时数据,而不是历史数据。它将连续监控并以指定的间隔报告统计数据。
因此,完整的命令 tsar -I dm-0 -i1 -l 用于实时连续监控并每1秒显示设备映射 dm-0 的统计数据。
echo 1 > /proc/sys/vm/block_dump ; sleep 60 ;dmesg   |awk  ' /dm-0/ {print $2}' |sort |uniq -c  | sort -rn ;echo 0 > /proc/sys/vm/block_dump;#这段命令是一个组合的 Linux 命令,用来启用 block_dump,记录一段时间内(在本例中为60秒)对特定块设备(dm-0)的访问,并对记录进行处理和分析,最后再禁用 block_dump。下面是对每个命令部分的具体解释:echo 1 > /proc/sys/vm/block_dump:#该命令启用内核的 block_dump 功能,允许内核记录所有的块设备读写事件到内核环形缓冲区(kernel ring buffer)。#/proc/sys/vm/block_dump 是一个虚拟文件系统中的文件,通过向它写入1,可以启用 block_dump。#sleep 60:这个命令使脚本暂停60秒。在这60秒内,内核会记录所有的块设备访问事件。#dmesg | awk ' /dm-0/ {print $2}' | sort | uniq -c | sort -rn:dmesg 命令用于打印或控制内核环形缓冲区的内容,这些内容包括了 block_dump 的输出。#awk '/dm-0/ {print $2}' 通过 awk 对 dmesg 的输出进行筛选,只打印出包含 'dm-0' 字样的行的第二个字段(通常是进程名或命令名)。#sort 命令对结果进行排序,以便接下来的 uniq -c 可以计数。#uniq -c 对排序后的内容进行去重,并计算每个唯一行出现的次数。#sort -rn 以数值递减的顺序对计数结果进行排序。#echo 0 > /proc/sys/vm/block_dump:
最后,通过向 /proc/sys/vm/block_dump 写入0来禁用 block_dump 功能,防止其影响系统性能或生成过多的日志数据。
总的来说,这段命令用于捕捉和分析在60秒内对设备 'dm-0' 的所有访问事件,并对访问最频繁的进程进行排序输出。这可以帮助系统管理员或开发者分析哪些进程在给定时间内频繁访问特定的块设备,从而对系统的性能瓶颈或异常行为进行诊断。请注意,在实际环境中执行此命令可能需要 root 权限,因为修改 /proc/sys/vm/block_dump 和读取 dmesg 输出通常需要高级权限。此外,启用 block_dump 可能会产生大量日志输出,应谨慎使用。

3.tsar

tsar --io -I dm-0  -i 1#显示出规律来了间隔5分钟左右io飙升for i in `docker ps -q`;do echo $i;docker exec $i crontab -l  2>/dev/null |grep "/5";done
9e9afc08e9b7
*/5 * * * * find /alidata/www/logs/ -mtime +3 -type f -name "*.log*" |xargs rm -rf;
*/5 * * * * /usr/sbin/logrotate  /alidata/conf/log_rotate.confed555455e8a5
*/5 * * * * date >/tmp/test.log9e575b226ba3
*/5 * * * * find /alidata/logs/ -mtime +0 -type f -name "*.log*"|xargs rm -rf;
*/5 * * * * /usr/sbin/logrotate /alidata/conf/log_rotate.conf34c6c3398bf5
*/5 * * * * (echo `date` > /var/log/cron.log; find /alidata/www/logs -mtime +0 -type f -name "*.log*" | xargs rm -f;)5a86fcb49739
*/5 * * * * find /alidata/www/logs/ -mtime +3 -type f -name "*.log*" |xargs rm -rf;
*/5 * * * * /usr/sbin/logrotate  /alidata/conf/log_rotate.conf761dbad2d3a2
*/5 * * * * find /alidata/www/logs/ -mtime +3 -type f -name "*.log*" |xargs rm -rf;
*/5 * * * * /usr/sbin/logrotate  /alidata/conf/log_rotate.conf
#根据定时计划任务判断日志压力过大,logrotate压力大docker ps | grep 9e9afc08e9b7docker ps | grep ed555455e8a5docker ps | grep 9e575b226ba3docker ps | grep 34c6c3398bf5docker ps | grep 5a86fcb49739docker ps | grep 761dbad2d3a2
发现是tianjimon的一些容器里面的定时任务在异常 可以采用注释掉定时任务 观察10分钟的方式 发现io水位不再飙升 定位问题就出现在这里kubectl get pods -n=tianjimon | grep acc | grep -v slave  | awk '{print "kubectl delete pod",$1,"-n=tianjimon"}' | bash#发现tianjimonaccsource-0里的stdout.log日志暴涨 导致的 重拉pod后解决问题#发现tianjimonaccsource-0里的stdout.log日志暴涨 导致的 重拉pod, 降低logrotate压力,解决问题
http://www.dtcms.com/a/491500.html

相关文章:

  • Spring Boot 外部化配置最佳实践指南
  • 提升网站访问速度一家做特卖的网站手机版
  • 国外有什么网站是做服装的wordpress修改管理密码
  • [linux仓库]信号保存[进程信号·肆]
  • AI产品经理学习笔记3 - Agent认知与原理分析
  • 建站代理赚钱吗做企业网站需要提供什么
  • 网站开发先写什么后写什么wordpress屏蔽功能org
  • RFSOC47DR+CPU 6U VPX射频信号处理板
  • 厦门网站建设缑阳建wordpress公告模板
  • debug - MDK - arm-none-eabi - 同样的工具链,源码,编译参数,elf是一样的
  • 前端-配置Prettier与ESLint9
  • 中企动力网站建设公司百度指数下载手机版
  • 蚂蚁 S21 XP+ HYD 500T矿机评测:SHA-256算法与高效液冷系统
  • 蚂蚁 S19 XP Hyd 3U 512T矿机评测:高效水冷设计,适合BTC/BCH挖矿
  • 【Win32 多线程程序设计基础第四章笔记】
  • 2024.6卷一阅读短语
  • 企业营销推广型网站建设怎么创造软件app
  • Rust 的错误处理:别拿类型系统当护身符
  • 用栈实现记忆存储——C++语言自制时间计算器
  • 实验二 呼吸灯功能实验
  • 动力 网站建设珠海专业网站建设费用
  • 博客系统测试
  • 高德地图电子围栏/地图选区/地图打点
  • 自己动手建设网站过程dede珠宝商城网站源码
  • Git的分支
  • 基础拓展
  • 手机微网站建设河南网站建设的详细策划
  • 剧本杀小程序系统开发:内容生态与商业模式的双轮驱动
  • 网站备案表不会写引流网站怎么做
  • 【系统分析师】写作框架:数据灾务技术与应用