虛擬機磁碟 I/O 延遲峰值
從過去幾天開始,我在一台虛擬機中出現了奇怪的 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引起的。我們將節點從集群中排除,然後將其重新添加,導致分片從機器上重新定位,然後又回到機器上。出於某種奇怪的原因,解決了這個問題。