Вопрос или проблема
Примерно месяц назад я установил последнюю версию 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
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:
- Документы Docker > Установка Docker Engine на Debian
- Документы Docker > Linux Post-Установка
- В частности, настройка драйвера журнала по умолчанию
Я также перешел на KDE, теперь, когда вещи, связанные с Gnome, не нужны Docker Desktop. Только время покажет, но, похоже, он стал намного отзывчивее и пока не зависает (ещё)!! Редактирование 8 месяцев спустя: с тех пор он работает как мечта! 🥳
См. также (но не следуйте этим инструкциям):
- Документы Docker > Установка Docker Desktop на Linux – в которых говорится в нескольких местах:
Docker Desktop на Linux работает в виртуальной машине (ВМ)
- Документы Docker > Часто задаваемые вопросы для Docker Desktop для Linux > Почему Docker Desktop для Linux работает в ВМ?
- Документы Docker > Установка Docker Desktop на Debian
Ответ или решение
Проблемы с зависанием виртуальной машины Debian с установленным Docker на VMware ESXi: Долгожданные решения
Введение
Ваша ситуация, связанная с зависанием виртуальной машины (ВМ) Debian 12 с установленным Docker на платформе VMware ESXi 8.0U2, является распространенной проблемой, с которой сталкиваются пользователи при работе с виртуализированными окружениями. Основные симптомы — периодические зависания и высокая загрузка CPU — могут быть следствием множества факторов. Рассмотрим возможные причины и альтернативные решения, которые помогут восстановить стабильность работы системы.
Проблематика
Изучая предоставленные данные, можно выделить несколько ключевых моментов:
-
Архитектура системы: Установлен Docker на Debian 12, используемом в качестве хоста для контейнера. При этом характерно использование графического интерфейса Gnome через VMware Remote Console.
-
Влияние удаленного доступа: Важно отметить, что система зависает в основном при активном подключении через Gnome, что может указывать на проблемы, связанные с графическим интерфейсом или виртуализацией.
-
Высокая загрузка CPU: Наблюдение за процессами, такими как
qemu-system-x86_64
, указывает на потенциальные проблемы с производительностью или неправильной настройкой аппаратной виртуализации.
Возможные причины зависаний
-
Неправильная установка Docker: Убедитесь, что используется только Docker Engine, а не Docker Desktop, который, как вы указали, запускает дополнительные виртуальные машины (через QEMU), что может привести к конфликтации ресурсов.
-
Конфликт с графической оболочкой: Использование Gnome может добавлять дополнительную нагрузку на систему. Графические интерфейсы на виртуальных машинах часто становятся источником проблем при высокой активности пользователей.
-
Проблемы с VMware Tools: Несмотря на то, что VMware Tools уже установлены, возможно, их настройки нуждаются в дополнительно корректировке для оптимизации производительности вашей виртуальной машины.
-
Системные ресурсы: Уменьшенное число виртуальных процессоров до 2 может исчерпывать ресурсы, когда несколько процессов требуют серьезных вычислительных мощностей.
Рекомендации по устранению проблем
-
Переустановка Docker: Как вы сделали, убедитесь в том, что был установлен только Docker Engine, следуя официальным рекомендациям. Это исключит влияние Docker Desktop и позволит избежать избыточной нагрузки на систему.
-
Настройка графического интерфейса: Попробуйте заменить Gnome на другой менее ресурсоемкий интерфейс, как KDE или XFCE, что подразумевает снижение нагрузки на CPU и улучшение общей производительности ВМ.
-
Мониторинг системы: Используйте такие инструменты, как
top
,htop
, илиiotop
, чтобы отслеживать, какие процессы вызывают высокую нагрузку в реальном времени. Это поможет быстро выявить проблемы. -
Обновление VMware Tools: Проверьте наличие обновлений для VMware Tools и убедитесь, что установлены только необходимые функции, которые действительно пользователь может использовать.
-
Параметры конфигурации виртуальной машины: Попробуйте увеличить объем выделенной оперативной памяти или возврат к изначальной конфигурации с 4 ядрами, чтобы оценить, какие изменения положительно скажутся на производительности.
-
Логи системы: Необходимо внимательно изучить системные логи (например,
syslog
,dmesg
), чтобы выявить возможные системные ошибки или исключения, возникающие перед зависанием.
Заключение
Вы проделали отличную работу, убрав ненужные элементы, такие как Docker Desktop, и проводя переустановку Debian на чистую конфигурацию. Как только вы начнете внедрять рекомендованные изменения, обращайте внимание на стабильность системы и производительность. Эти меры должны значительно улучшить работу вашей виртуальной машины и минимизировать риски случайных зависаний.
P.S. Не забывайте сохранять резервные копии ваших данных и конфигураций перед проведением значительных изменений в системе.