MySQL-5.5.10 - потеря соединения с сервером MySQL во время запроса (как веб-клиенты, так и подчиненные MySQL)

Мы только что обновили наши существующие серверы БД MySQL5.1 до более нового (гораздо лучшего) оборудования с MySQL 5.5, и в течение почти 6 недель все шло гладко.

Только за последние несколько дней я заметил несколько ошибок, таких как:

Из ведомого MySQL:

[ОШИБКА] Ошибка чтения пакета с сервера: потеряно соединение с сервером MySQL во время запроса ( server_errno=2013)

Или от Apache/ Другое:

Потеряно соединение с сервером MySQL при чтении начального пакета связи, системная ошибка: 110

Однажды этим вечером многие веб-узлы сообщали об этой ошибке в течение трехминутного периода (таких сообщений было много, поскольку это было в загруженный период). Тем не менее, проблемы не соответствуют временам экстремальной нагрузки. Для всех целей и задач загрузка соединения / потока в MySQL происходит с нормальной скоростью (между 10 и 40 подключенными потоками), а загрузка через Интернет в последние несколько недель была НАМНОГО выше.

Могут ли быть другие причины для этих ошибок соединения, которых я не вижу?

3 ответа

Ура, настраивая переменную max_allowed_packet, увеличивая ее значение и перезапуская MySQL. Это обеспечит большую емкость для MySQL при чтении пакетов. Попробуйте и дайте нам обратную связь.

Ошибка 110 - "Превышено время ожидания соединения", что говорит о том, что что-то происходит в сети между вашим клиентом и сервером MySQL. Помимо проблем с сетью, вы также можете увидеть это, если сервер слишком перегружен, чтобы отвечать на входящее соединение.

Вы можете попытаться увеличить время ожидания или время ожидания соединения, но это может быть маскировкой основной проблемы. у вас может быть неправильный запрос, из-за которого процессы mysql складываются. проверьте (или включите) свой медленный журнал sql. запустите mysqltuner для возможной настройки переменных. Прочитайте раздел о настройке mysql документации по mysql и убедитесь, что ваши директивы нормальны.

РЕДАКТИРОВАТЬ: на прикладном уровне, то есть php, вы можете заставить скрипт php умереть, если он не завершится в течение определенного периода времени, отрегулировав директиву max_execution_time

Другие вопросы по тегам