Docker для Debian на виртуальной машине VMware ESXi часто зависает.

Вопрос или проблема

Примерно месяц назад я установил последнюю версию Docker на Debian 12 на виртуальной машине VMware ESXi 8.0U2 (последняя версия vSphere).

Я попытался запустить VNC, но другие приоритеты взяли верх, поэтому на данный момент я просто получаю доступ к ВМ через VMware Remote Console, используя Gnome.

На нем установлена последняя версия VMware Tools:

$ sudo apt-get install open-vm-tools open-vm-tools-desktop
open-vm-tools уже является самой новой версией (2:12.2.0-1+deb12u2).
open-vm-tools-desktop уже является самой новой версией (2:12.2.0-1+deb12u2).

Одновременно работает только один контейнер. Я регулярно выполняю docker image prune -f и docker system prune

Когда ВМ работает “самостоятельно” (без моего подключения через Remote Console на Gnome), она работает как часы и никогда не зависает.

Когда я получаю доступ к ВМ и что-то делаю, она случайным образом зависает, и мое “решение” – перезагрузить ВМ. Попытка получить доступ к серверу nginx, работающему на контейнере, с другой машины во время зависания приводит к тому, что наш обратный прокси возвращает Error 503 Service Unavailable - No server is available to handle this request.

Вся виртуальная машина Debian Docker полностью зависает, когда это происходит, и не позволяет мне кликать/набирать текст, экран зависает. Я не делаю ничего чрезмерно требовательного. Обычно я просто редактирую файл в nano в терминале или что-то подобное.

Иногда я вообще ничего не делаю на ВМ, я просто подключен к ней через VMware Remote Console – и она зависает. Это происходит с случайными интервалами, но я обычно получаю около часа или двух до сбоя, хотя это, похоже, меняется случайным образом, иногда я получаю несколько часов – в последнее время времени до сбоя становится все меньше.

Если я жду и не перезагружаю ВМ, Remote Console в конечном итоге возвращается к жизни через 5-10 минут, экран размораживается, и я могу снова вводить данные. Демон Docker падает. Я не использую Docker Desktop. Он установлен, но не настроен на автоматический запуск при загрузке/входе в систему.

Иногда при сбое не работает ни один контейнер. Контейнер, который я использую, является очень простым веб-сервером, который использую только я.

Иногда (но не всегда) даже выполнение перезагрузки ВМ из VMware Remote Console, пока ВМ зависает, не срабатывает с первого раза (но обычно срабатывает со второго):

В vSphere, когда ВМ зависает, я [иногда?] вижу, что ЦПU поддерживает 100% загрузку! Я уменьшил количество ядер ЦПУ с 4 до 2, так как это вызывало очень высокое потребление ЦПУ на сервере хоста VMware с 6c 12t Xeon E5-1650V3. ВМ имеет 8 ГБ ОЗУ.

У меня нет проблем с другими моими (Linux, FreeBSD и Windows) не-Docker ВМ.

С чего начать разбираться с этой проблемой, пожалуйста?

У меня есть чувство, что это связано с VMware Tools или Gnome. Каждый раз, когда я выполняю сборку Dockerfile (но также иногда, когда ничего не делаю), я заметил, что эти процессы часто потребляют очень много ЦПУ:

  • qemu-system-x86_64
    • Этот процесс также имеет большое количество чтений/записей на диск, что, я предполагаю, нормально при сборке
    • Наведение на процесс в системном мониторе показывает, что он связан с Docker:
  • gnome-shell
  • docker-scout
  • com.docker.backend

Часто сборка проходит успешно, но эти процессы все равно остаются с высоким потреблением ЦПУ еще какое-то время после этого – иногда вызывая сбой (когда больше ничего не собирается).

Я не против попробовать что-то на совершенно новой установке Debian, но я не уверен, что это поможет, если я ничего больше не изменю в своей настройке.

ОП здесь.

Наша конфигурация: физический сервер запускает ESXi > имеет ВМ для Debian/Docker > имеет контейнер для nginx.

Сначала я неправильно понял @GeraldSchneider’s comment – я думал, он имел в виду удалить Gnome Desktop (возможно, он тоже это имел в виду), но на самом деле удаление Docker Desktop теперь имеет смысл, оглядываясь назад.

Спасибо @AB’s comments за указывание на то, что:

  • Существуют два различных варианта установки: Docker Desktop + Docker Engine
  • В отличие от Docker Engine, Docker Desktop работает внутри ВМ через QEMU внутри Debian ВМ, что вызывает вложенную виртуализацию – что приводит к частым сбоям хоста ВМ!

Я abandon original install and reinstalled Debian from scratch, following these guides:

Я также перешел на KDE, теперь, когда вещи, связанные с Gnome, не нужны Docker Desktop. Только время покажет, но, похоже, он стал намного отзывчивее и пока не зависает (ещё)!! Редактирование 8 месяцев спустя: с тех пор он работает как мечта! 🥳

См. также (но не следуйте этим инструкциям):

Ответ или решение

Проблемы с зависанием виртуальной машины Debian с установленным Docker на VMware ESXi: Долгожданные решения


Введение

Ваша ситуация, связанная с зависанием виртуальной машины (ВМ) Debian 12 с установленным Docker на платформе VMware ESXi 8.0U2, является распространенной проблемой, с которой сталкиваются пользователи при работе с виртуализированными окружениями. Основные симптомы — периодические зависания и высокая загрузка CPU — могут быть следствием множества факторов. Рассмотрим возможные причины и альтернативные решения, которые помогут восстановить стабильность работы системы.

Проблематика

Изучая предоставленные данные, можно выделить несколько ключевых моментов:

  1. Архитектура системы: Установлен Docker на Debian 12, используемом в качестве хоста для контейнера. При этом характерно использование графического интерфейса Gnome через VMware Remote Console.

  2. Влияние удаленного доступа: Важно отметить, что система зависает в основном при активном подключении через Gnome, что может указывать на проблемы, связанные с графическим интерфейсом или виртуализацией.

  3. Высокая загрузка CPU: Наблюдение за процессами, такими как qemu-system-x86_64, указывает на потенциальные проблемы с производительностью или неправильной настройкой аппаратной виртуализации.

Возможные причины зависаний

  1. Неправильная установка Docker: Убедитесь, что используется только Docker Engine, а не Docker Desktop, который, как вы указали, запускает дополнительные виртуальные машины (через QEMU), что может привести к конфликтации ресурсов.

  2. Конфликт с графической оболочкой: Использование Gnome может добавлять дополнительную нагрузку на систему. Графические интерфейсы на виртуальных машинах часто становятся источником проблем при высокой активности пользователей.

  3. Проблемы с VMware Tools: Несмотря на то, что VMware Tools уже установлены, возможно, их настройки нуждаются в дополнительно корректировке для оптимизации производительности вашей виртуальной машины.

  4. Системные ресурсы: Уменьшенное число виртуальных процессоров до 2 может исчерпывать ресурсы, когда несколько процессов требуют серьезных вычислительных мощностей.

Рекомендации по устранению проблем

  1. Переустановка Docker: Как вы сделали, убедитесь в том, что был установлен только Docker Engine, следуя официальным рекомендациям. Это исключит влияние Docker Desktop и позволит избежать избыточной нагрузки на систему.

  2. Настройка графического интерфейса: Попробуйте заменить Gnome на другой менее ресурсоемкий интерфейс, как KDE или XFCE, что подразумевает снижение нагрузки на CPU и улучшение общей производительности ВМ.

  3. Мониторинг системы: Используйте такие инструменты, как top, htop, или iotop, чтобы отслеживать, какие процессы вызывают высокую нагрузку в реальном времени. Это поможет быстро выявить проблемы.

  4. Обновление VMware Tools: Проверьте наличие обновлений для VMware Tools и убедитесь, что установлены только необходимые функции, которые действительно пользователь может использовать.

  5. Параметры конфигурации виртуальной машины: Попробуйте увеличить объем выделенной оперативной памяти или возврат к изначальной конфигурации с 4 ядрами, чтобы оценить, какие изменения положительно скажутся на производительности.

  6. Логи системы: Необходимо внимательно изучить системные логи (например, syslog, dmesg), чтобы выявить возможные системные ошибки или исключения, возникающие перед зависанием.

Заключение

Вы проделали отличную работу, убрав ненужные элементы, такие как Docker Desktop, и проводя переустановку Debian на чистую конфигурацию. Как только вы начнете внедрять рекомендованные изменения, обращайте внимание на стабильность системы и производительность. Эти меры должны значительно улучшить работу вашей виртуальной машины и минимизировать риски случайных зависаний.

P.S. Не забывайте сохранять резервные копии ваших данных и конфигураций перед проведением значительных изменений в системе.

Оцените материал
Добавить комментарий

Капча загружается...