
過去幾天以來,我在一台虛擬機器中遇到了奇怪的 I/O 高峰。
其 2.6.32-504.el6.x86_64 #1 SMP 9 月 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 節點的請求逾時,在檢查虛擬機器後,我們現在只能看到偶爾出現磁碟 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):請求=14 時間=203.6 us(快)
4 KiB <<< /dev/sdf1(區塊裝置 100.0 GiB):請求=15 時間=1.09 毫秒(快)
4 KiB <<< /dev/sdf1(區塊裝置 100.0 GiB):請求=16 時間=319.3 us(快)
4 KiB <<< /dev/sdf1(區塊裝置 100.0 GiB):請求=17 時間=249.8 us(快)
正如您所看到的,某一時刻出現了 20 秒的峰值。虛擬機器位於 vmware esxi Blade 上。資料儲存區正被另外 3 個虛擬機器使用,但沒有一個虛擬機器顯示出此類延遲問題。我嘗試了 fsck 和une2fs,兩者在檔案系統上都沒有顯示任何問題。
當這種情況開始發生時,虛擬機器上沒有更新。任何有關如何調試此問題的提示都值得讚賞
編輯:這是 atop -d 資訊。好像 lv 100% 繁忙且 java (elasticsearch 此時正在讀取)
LVM | vg00-lv_數據 |忙碌100% | |閱讀 8904 |寫 4 | |千伯/轉 11 | KiB/w 4 |
|分子溴/秒 10.03 |兆瓦/秒 0.00 | | AVQ 21.41 | avio 1.12 毫秒 |PID TID
RDDSK WRDSK
WCANCL DSK
CMD 1/12629 -
100.3M 12K 0K 100%
java
答案1
最後,看來一切都是由elasticsearch造成的。我們從叢集中排除節點,然後將其添加回來,導致分片從機器重新定位,然後又回到機器。由於某種奇怪的原因解決了問題。