Последние несколько дней у меня возникают странные всплески ввода-вывода на одной виртуальной машине.
Его 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/12629 -
100,3 млн 12 тыс 0 тыс 100%
Ява
В конце концов вроде все было вызвано elasticsearch. Мы исключили узел из кластера, а затем добавили его обратно, в результате чего шарды переместились с компьютера, а затем обратно на компьютер. По какой-то странной причине это устранило проблему.