Сообщение об ошибке "Сервер MySQL удален" на сайте Django, размещенном на cPanel
Я размещаю проект Django на общем сервере с использованием cPanel, и в последнее время я столкнулся с неприятной проблемой.
На нескольких страницах сайта я получаю сообщение об ошибке внутреннего сервера 500. После проверки Sentry я постоянно вижу эту ошибку:
Level: Error
(2006, "MySQL server has gone away (ConnectionResetError(104, 'Connection reset by peer'))")
Это происходит случайным образом, но часто и, похоже, происходит на любой странице, которая касается базы данных.
Что я пробовал
Установите CONN_MAX_AGE = 600 для сохранения подключений к базе данных
Увеличено время ожидания подключения
Тщательно искал в Интернете и даже пробовал предложения в чате — пока безуспешно
Нет доступа к логам MySQL или конфигурациям сервера (общий хостинг cPanel)
Моя текущая конфигурация БАЗ данных:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '***',
'USER': '***',
'PASSWORD': '***',
'HOST': 'localhost',
'PORT': '3306',
'CONN_MAX_AGE': 600,
'OPTIONS': {
'charset': 'utf8mb4',
'connect_timeout': 10,
'init_command': "SET sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'"
}
}
}
В чем мне нужна помощь
- Это проблема с тайм-аутом MySQL или что-то связанное с ограничениями cPanel на MySQL?
- Есть ли какой-нибудь способ лучше справиться с этим в Django, учитывая мои ограничения на хостинг?
- Должен ли я попросить своего хостера изменить настройки MySQL (например, wait_timeout, max_allowed_packet)?
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '*', 'USER': '*', 'PASSWORD': '*', 'HOST': 'localhost', 'PORT': '3306', 'CONN_MAX_AGE': 0, # add this 'OPTIONS': { 'charset': 'utf8mb4', 'connect_timeout': 60, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'" } } } //This configuration has been working fine for me so far.