仮想マシンのディスクI/Oレイテンシの急増

仮想マシンのディスクI/Oレイテンシの急増

ここ数日、1 台の仮想マシンで奇妙な 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 (Santiago)

約 50G のメモリと 24 個の CPU で Elasticsearch データ ノードが実行されます。

そのElasticsearchノードへのリクエストでタイムアウトが検出され、VMを検査した後、今のところは散発的にディスクI/Oが停止していることがわかりました。仮想マシンのディスクの1つでiopingを使用しました。

4 KiB <<< /dev/sdf1 (ブロックデバイス 100.0 GiB): リクエスト=1 時間=3.76 ms (ウォームアップ)

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 ms (高速)

4 KiB <<< /dev/sdf1 (ブロックデバイス 100.0 GiB): リクエスト=11 時間=1.30 ms (高速)

4 KiB <<< /dev/sdf1 (ブロックデバイス 100.0 GiB): リクエスト=12 時間=2.20 ms (高速)

4 KiB <<< /dev/sdf1 (ブロックデバイス 100.0 GiB): リクエスト=13 時間=2.61 ms (高速)

4 KiB <<< /dev/sdf1 (ブロックデバイス 100.0 GiB): リクエスト=14 時間=203.6 us (高速)

4 KiB <<< /dev/sdf1 (ブロックデバイス 100.0 GiB): リクエスト=15 時間=1.09 ms (高速)

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 ブレード上にあります。データストアは 3 台の仮想マシンによって使用されていますが、いずれの仮想マシンでもこのような遅延の問題は発生していません。fsck と tune2fs を試しましたが、どちらもファイルシステムに問題は見られませんでした。

この問題が起こり始めたとき、仮想マシンに更新はありませんでした。この問題をデバッグする方法についてのヒントがあればありがたいです。

編集: atop -d 情報はこちらです。lv が 100% ビジーになり、java (elasticsearch がその時点で読み取り中) になるようです。

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 ms |

PID TID
RDDSK WRDSK
WCANCL DSK
コマンド 1/1

2629 -
100.3M 12K 0K 100%
ジャワ

答え1

結局、すべては elasticsearch が原因であったようです。ノードをクラスターから除外し、再度追加したところ、シャードがマシンから再配置され、その後マシンに戻りました。奇妙なことに、これで問題は解決しました。

関連情報