У меня была виртуальная машина DigitalOcean, на которой Jenkins работал без каких-либо проблем в течение последнего года. На этой неделе внезапно начались проблемы.
Это началось с того, что однажды я заметил apt
связанный процесс (apt-check
Я думаю) завис при 100% загрузке процессора. Я перезагрузил машину, и все вернулось к норме.
Однако сейчас машина практически пришла в негодность. SSH работает медленно, и я почти не могу получить доступ к веб-интерфейсу Jenkins. Итак, я начал копаться и посмотреть, что было причиной проблемы.
Самым примечательным, что я заметил, было то, что пока выполнялось одно из моих заданий Jenkins, использование операций ввода-вывода постоянно достигало 100%.
Хорошо, это как-то странно. Я установил на машине iotop и посмотрел, что использует столько операций ввода-вывода. Просто бегаю iotop
не показывал много. Однако когда я побежал iotop --accumulated
Я заметил, что jbd2
вызывал большое время ожидания ввода-вывода, фактически не выполняя большой работы (практически не было операций чтения / записи) ...
Итак, я пошел дальше и провел несколько тестов (после выключения Jenkins), чтобы измерить фактическую производительность чтения / записи на машине. Читать было хорошо, а писать странно.
root@jenkins:~# dd if=/dev/zero of=/tmp/output bs=1G count=1
1073741824 bytes (1.1 GB) copied, 271.903 s, 3.9 MB/s
Это кажется очень медленным для виртуальной машины DigitalOcean, использующей хранилище SSD. Но просто чтобы убедиться, что я провел тот же тест на другой виртуальной машине с теми же характеристиками (1 ГБ 30 ГБ AMS3):
root@gitlab:~# dd if=/dev/zero of=/tmp/output bs=1G count=1
1073741824 bytes (1.1 GB) copied, 36.9623 s, 29.0 MB/s
Ясно, что с машиной Дженкинса что-то не так. Для меня это похоже на аппаратную проблему (некоторые очень легкие поиски в Google относительно времени ожидания jbd2 io упоминали проблемы с RAID).
Машина простаивала всю ночь, а Дженкинс не работал. Использование ввода-вывода постоянно колеблется (10-50%), и я наблюдаю высокую загрузку ЦП процессами apt. Не уверен, что это актуально.
В качестве финального теста, чтобы проверить наличие проблем с оборудованием, я также создал новую виртуальную машину из снимка моей машины jenkins. На данный момент кажется, что новая виртуальная машина работает нормально (jbd2 не вызывает большого времени ожидания ввода-вывода - в режиме ожидания или когда выполняется задание jenkins).
Может ли это действительно быть аппаратная проблема со старой виртуальной машиной jenkins? Я также свяжусь с DigitalOcean и посмотрю, что они скажут. Мне все это кажется немного тревожным.
DigitalOcean подтвердила, что хост-узел испытывает высокую нагрузку ввода-вывода. Меня беспокоит, что (я предполагаю) другой клиент может сделать мою каплю непригодной для использования. Однако ДЕЙСТВИТЕЛЬНО перенесли мою каплю на другой хост, и теперь все вернулось к норме.