从过去几天开始,我在一台虚拟机中出现了奇怪的 I/O 峰值。
它的 2.6.32-504.el6.x86_64 #1 SMP Tue Sep 16 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux Red Hat Enterprise Linux Server 6.6 版(圣地亚哥)
大约 50G 的内存和 24 个 CPU 运行 elasticsearch 数据节点。
我们检测到发送到该 elasticsearch 节点的请求超时,并且在检查 vm 之后,我们现在只设法看到偶尔出现磁盘 I/O 卡住。我在虚拟机中的一个磁盘上使用了 ioping
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=1 时间=3.76 毫秒(预热)
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=2 时间=1.17 秒
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=3 时间=131.7 us
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=4 时间=282.8 us
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=5 时间=999.4 毫秒
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=6 时间=632.7 毫秒
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=7 时间=2.15 秒(慢)
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=8 时间=400.2 毫秒
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=9 时间=20.0 秒(慢)
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=10 时间=1.10 毫秒(快速)
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=11 时间=1.30 毫秒(快速)
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=12 时间=2.20 毫秒(快速)
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=13 时间=2.61 毫秒(快速)
4 KiB <<< /dev/sdf1 (块设备 100.0 GiB): request=14 time=203.6 us (fast)
4 KiB <<< /dev/sdf1(块设备 100.0 GiB):请求=15 时间=1.09 毫秒(快速)
4 KiB <<< /dev/sdf1 (块设备 100.0 GiB): request=16 time=319.3 us (fast)
4 KiB <<< /dev/sdf1 (块设备 100.0 GiB): request=17 time=249.8 us (fast)
如您所见,某一时刻出现了 20 秒的峰值。虚拟机在 vmware esxi 刀片上。数据存储被另外 3 台虚拟机使用,但没有一个显示出这种延迟问题。我尝试了 fsck 和 tune2fs 并且都在文件系统上显示没有问题。
当这种情况开始发生时,虚拟机上没有更新。任何有关如何调试此问题的提示表示赞赏
编辑:这是-d信息的顶部。似乎 lv 变得 100% 忙而 java (当时正在阅读弹性搜索)
LVM | vg00-lv_data | 忙 100% | | 阅读 8904 | 写 4 | | KiB/r 11 | KiB/w 4 |
| MBr/s 10.03 | MBw/s 0.00 | | avq 21.41 | avio 1.12 毫秒 |PID TID
RDDSK WRDSK
WCANCL DSK
CMD 1/12629 -
100.3M 12K 0K 100%
爪哇