Linux

虛擬機磁碟 I/O 延遲峰值

  • February 10, 2020

從過去幾天開始,我在一台虛擬機中出現了奇怪的 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 時間

RDDSK WRDSK

WCANCL DSK

CMD 1/1

2629 -

100.3M 12K 0K 100%

爪哇

最後,似乎一切都是由elasticsearch引起的。我們將節點從集群中排除,然後將其重新添加,導致分片從機器上重新定位,然後又回到機器上。出於某種奇怪的原因,解決了這個問題。

引用自:https://serverfault.com/questions/1001020