Блог

Как исправить ошибку MySQL server has gone away в WordPress

Ошибка «MySQL server has gone away» относится к тем проблемам, которые могут сбивать с толку даже опытных вебмастеров. Сегодня сайт работает нормально, а завтра в логах появляется сообщение о потере соединения с базой данных.

Многие начинают искать проблему в WordPress, хотя на практике источник ошибки часто находится гораздо глубже — в настройках MySQL, PHP или самого сервера.

Разберёмся, что означает эта ошибка, почему она возникает и как её исправить.

Что означает ошибка MySQL server has gone away

Сообщение обычно выглядит так:

MySQL server has gone away

или:

Error reconnecting to the database

Это означает, что WordPress или другой PHP-скрипт потерял соединение с сервером MySQL во время выполнения запроса.

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

Когда появляется ошибка

Чаще всего проблема возникает:

  • при импорте больших баз данных;
  • во время резервного копирования;
  • при переносе сайта;
  • при массовом обновлении товаров WooCommerce;
  • после длительного простоя соединения;
  • на перегруженном сервере;
  • после обновления MySQL.

Иногда ошибка появляется только в административной панели, а сам сайт продолжает открываться.

Причина №1. Слишком маленькое значение wait_timeout

Это одна из самых распространённых причин.

Параметр:

wait_timeout

определяет, сколько времени сервер MySQL будет держать неактивное соединение открытым.

Если скрипт долго выполняется и не обращается к базе данных, сервер может закрыть соединение.

Проверить текущее значение можно командой:

SHOW VARIABLES LIKE 'wait_timeout';

На небольших серверах значение иногда составляет всего несколько десятков секунд.

Для WordPress обычно используются более высокие значения.

Причина №2. Слишком большой SQL-запрос

MySQL ограничивает размер данных, которые можно отправить одним запросом.

За это отвечает параметр:

max_allowed_packet

Если размер запроса превышает установленный лимит, сервер разрывает соединение.

Особенно часто проблема возникает:

  • при импорте дампов базы данных;
  • загрузке больших объёмов контента;
  • работе WooCommerce;
  • миграции сайта между хостингами.

Проверить текущее значение можно командой:

SHOW VARIABLES LIKE 'max_allowed_packet';

На современных серверах обычно используют значения от 64 МБ и выше.

Причина №3. Недостаток оперативной памяти

Если сервер испытывает нехватку RAM, MySQL может завершать соединения или перезапускаться.

Признаки проблемы:

  • сайт периодически недоступен;
  • ошибки появляются случайным образом;
  • в логах есть сообщения о нехватке памяти;
  • одновременно наблюдаются ошибки PHP.

Особенно часто это происходит на дешёвом виртуальном хостинге или VPS с минимальным объёмом памяти.

Причина №4. Перегрузка базы данных

На крупных сайтах проблема может быть связана с высокой нагрузкой.

Типичные причины:

  • большое количество одновременных посетителей;
  • тяжёлые SQL-запросы;
  • плохо написанные плагины;
  • отсутствие кэширования.

Если сервер постоянно работает на пределе возможностей, соединения начинают обрываться.

Причина №5. Повреждение таблиц MySQL

Иногда ошибка появляется после аварийного завершения работы сервера или неудачного обновления.

Проверьте таблицы через phpMyAdmin.

Для проверки можно использовать команду:

CHECK TABLE wp_posts;

Для восстановления:

REPAIR TABLE wp_posts;

На большинстве современных сайтов используется InnoDB, поэтому восстановление чаще выполняется средствами самого MySQL или через резервные копии.

Причина №6. Ошибки после переноса сайта

После миграции WordPress ошибка встречается довольно часто.

Причины:

  • повреждённый дамп базы данных;
  • неправильная кодировка;
  • ограничения нового хостинга;
  • несовместимость версий MySQL.

Если проблема появилась сразу после переноса, стоит проверить журнал ошибок сервера и процесс импорта базы данных.

Как найти источник проблемы

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

Полезно проверить:

Логи MySQL

На сервере обычно доступны журналы:

mysql.log
error.log

Именно там чаще всего содержится причина отключения соединения.

Логи WordPress

Включите отладку через файл:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

После этого проверьте:

wp-content/debug.log

Иногда журнал сразу показывает проблемный плагин или запрос.

Какие плагины чаще всего вызывают проблему

На практике виновниками нередко оказываются:

  • плагины резервного копирования;
  • плагины импорта товаров;
  • системы статистики;
  • тяжёлые SEO-плагины;
  • некоторые конструкторы страниц.

Если ошибка появилась после установки нового расширения, начните диагностику именно с него.

Что делать на обычном хостинге

На виртуальном хостинге доступ к настройкам MySQL обычно ограничен.

В этом случае стоит:

  1. Проверить использование ресурсов.
  2. Изучить журналы ошибок.
  3. Отключить подозрительные плагины.
  4. Связаться с технической поддержкой.

Хороший хостинг сможет быстро сообщить, связана ли проблема с лимитами сервера.

Когда пора менять хостинг

Если ошибка возникает регулярно, а поддержка советует лишь «уменьшить нагрузку», возможно, сайт уже перерос текущий тариф.

Особенно это актуально для:

  • интернет-магазинов;
  • крупных блогов;
  • сайтов с высокой посещаемостью;
  • проектов с тяжёлыми базами данных.

Иногда переход на более производительный сервер решает проблему полностью.

Заключение

Ошибка «MySQL server has gone away» редко связана непосредственно с WordPress. Обычно причина кроется в ограничениях MySQL, нехватке ресурсов сервера, слишком больших запросах или проблемных плагинах. Вместо того чтобы сразу увеличивать лимиты, стоит изучить логи и определить источник проблемы. Такой подход позволяет устранить ошибку окончательно, а не бороться с её последствиями.

Смотри ещё

Back to top button