/
/
Ошибка “Превышено время ожидания отклика от сервера MySQL” при установке альтернативной СУБД

Ошибка “Превышено время ожидания отклика от сервера MySQL” при установке альтернативной СУБД

Симптомы

Процесс установки альтернативной СУБД не выполняется, в веб-интерфейсе панели появляется сообщение об ошибке "Превышено время ожидания отклика от сервера MySQL".

Причины

  1. Включен AppArmor
  2. Недостаток оперативной памяти
  3. Правила брандмауэра блокируют работу Docker
  4. Недоступны сервера Docker
  5. Используется драйвер devicemapper в Docker

Решение

Отключение AppArmor

Отключение AppArmor - одно из условий корректной установки и работы панели ispmanager. 

Подключитесь к серверу по SSH с правами администратора и выполните следующие команды для отключения AppArmor:

aa-teardown
systemctl disable apparmor

Недостаток оперативной памяти

Для корректной работы одного docker-контейнера требуется не менее 1.5ГБайт доступной (available) оперативной памяти. Узнать объем доступной для использования оперативной памяти, можно с помощью следующей команды:

free -h | awk '{print $6}'

При недостатке памяти контейнер с альтернативной СУБД не сможет запуститься, а в системном логе будут присутствовать ошибки сообщения о работе "oom-killer", которые можно обнаружить с помощью команды:

  • grep "Out of" /var/log/syslog - для Debian и Ubuntu
  • grep "Out of" /var/log/messages - для RHEL-based систем (например, CentOS и AlmaLinux)

В данном случае необходимо увеличить объем доступной оперативной памяти, увеличив общий объем оперативной памяти и/или оптимизировав потребление оперативной памяти другими приложениями.

После этого, повторите установку альтернативной СУБД.

Настройка правил брандмауэра

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

ОБРАТИТЕ ВНИМАНИЕ!

Рекомендации в данной главе применимы только к стандартным установкам. Если правила брандмауэра менялись вручную, предварительно потребуется анализ текущих правил.

Убедитесь, что для цепочек INPUT, OUTPUT и FORWARD установлена политика ACCEPT с помощью команды:

iptables -S INPUT | head -1 && iptables -S OUTPUT | head -1 && iptables -S FORWARD | head -1

Далее необходимо проверить наличие правил, которые устанавливает Docker, выполнив следующую команду:

iptables -S | grep DOCKER

Вывод должен содержать следующие цепочки и правила:

-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 3306 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

Если какие-либо строки отсутствуют, перезапустите службу Docker следующей командой:

systemctl restart docker

Недоступность серверов Docker

Проверьте доступность серверов Docker с помощью команды:

curl -ikLv https://download.docker.com

Сервер считается доступным, если в выводе будет присутствовать значение "HTTP/2 200". В ином случае, необходимо проверить сетевые настройки на сервере и вышестоящем оборудовании, например на стороне хостинг- или интернет-провайдера.

Также проверьте, что на вашем сервере разрешается домен download.docker.com, выполнив команду:

dig A download.docker.com +short

Корректный вывод будет содержать IP-адреса и доменные имена, например:

d2h67oheeuigaw.cloudfront.net.
3.164.240.119
3.164.240.123

Если вывод содержит ошибки, необходимо проверить настройки DNS на сервере и работу используемых DNS-серверов, что указаны в /etc/resolve.conf.

Использование драйвера devicemapper

Драйвер "devicemaper" - это устаревший драйвер файловой системы для Docker, который более не поддерживается в актуальных версиях Docker. На текущий момент актуальный драйвер - это "overlay2". Проверить драйвер, который используется Docker, можно с помощью команды:

docker info | grep 'Storage Driver'

Быстрое решение этого вопроса отсутствует, поскольку изменения затрагивают ядро операционной системы. Наиболее подходящим решением является миграция на современную ОС.