Назад | Перейти на главную страницу

Пики задержки ввода-вывода диска виртуальной машины

Последние несколько дней у меня возникают странные всплески ввода-вывода на одной виртуальной машине.

Его 2.6.32-504.el6.x86_64 # 1 SMP Вт, 16 сентября 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU / Linux Red Hat Enterprise Linux Server, выпуск 6.6 (Сантьяго)

Около 50 ГБ памяти и 24 ЦП, на которых выполняется узел данных elasticsearch.

Мы обнаружили тайм-ауты в запросах, идущих к этому узлу elasticsearch, и после проверки виртуальной машины нам удалось увидеть только то, что там время от времени дисковый ввод-вывод застревает. Я использовал ioping на одном из дисков виртуальной машины

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 1 раз = 3,76 мс (разминка)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 2 время = 1,17 с

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 3 время = 131,7 мкс

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 4 время = 282,8 мкс

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 5 время = 999,4 мс

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 6 время = 632,7 мс

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 7 время = 2,15 с (медленно)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 8 время = 400,2 мс

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 9 время = 20,0 с (медленно)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 10 время = 1,10 мс (быстро)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 11 время = 1,30 мс (быстро)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 12 время = 2,20 мс (быстро)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 13 время = 2,61 мс (быстро)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 14 время = 203,6 мкс (быстро)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 15 время = 1,09 мс (быстро)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 16 время = 319,3 мкс (быстро)

4 КиБ <<< / dev / sdf1 (блочное устройство 100,0 ГиБ): запрос = 17 время = 249,8 мкс (быстро)

Как видите, в один момент был 20-секундный всплеск. Виртуальная машина находится на блейд-сервере vmware esxi. Datastore используется еще тремя виртуальными машинами, но ни одна из них не демонстрирует проблем с задержкой. Я попробовал fsck и tune2fs, и у обоих не было проблем с файловой системой.

Когда это начало происходить, на виртуальной машине не было обновлений. Любой намек на то, как отладить эту проблему, приветствуется.

edit: вот поверх -d info. Похоже, lv становится занятым на 100%, а java (в этот момент читает elasticsearch)

LVM | vg00-lv_data | заняты 100% | | читать 8904 | написать 4 | | KiB / r 11 | КиБ / нед 4 |
| МБр / с 10,03 | МБВт / с 0,00 | | avq 21.41 | avio 1,12 мс |

PID TID
RDDSK WRDSK
WCANCL DSK
CMD 1/1

2629 -
100,3 млн 12 тыс 0 тыс 100%
Ява

В конце концов вроде все было вызвано elasticsearch. Мы исключили узел из кластера, а затем добавили его обратно, в результате чего шарды переместились с компьютера, а затем обратно на компьютер. По какой-то странной причине это устранило проблему.