Сегодня один из моих веб-сайтов начал показывать
Error Number: 2006 MySQL server has gone away
Это клиентский сайт с низким трафиком, работающий под Apache 2.2.9 (Debian), PHP 5.2.6-1 + lenny3 (с использованием Framework CodeIgniter 1.7.1) и MySQL 5.0.51a. Я, очевидно, узнал об ошибке, но все возможные решения подразумевают, что есть большие запросы, которые могут закончиться, и reset соединение, или попадание в пределы пакета. Однако это не так, это небольшая база данных, обработанная простейшими запросами. Чтобы быть уверенным в этом, я составил несколько запросов, чтобы вернуть одну строку, все еще ту же ошибку.
Учетные данные базы данных прекрасны, я даже могу войти непосредственно в mysql, запускать некоторые запросы на сайт и мгновенно получать нужные данные. На одном сервере есть несколько других сайтов и подключение к базе данных, гораздо большие сайты, и у всех их нет проблем.
Я пробовал:
- Перезапуск MySQL
- Перезапуск всего сервера
- Поиск ошибок в журналах (как Apache, так и MySQL, нет)
- Проверка прав пользователя db
- Изменение
mysql.connect_timeout
иdefault_socket_timeout
в PHP - Изменение
max_allowed_packet
в MySQL - Чтение официальных документов, форума и всего в SO, в котором говорится, что "сервер MySQL ушел"
New:
- Отключение постоянных подключений в PHP
- Изменение
wait_timeout
иconnect_timeout
в MySQL
Update:
Похоже, что это связано с временем выполнения моего script: он извлекает некоторую информацию с помощью PHP-клиента Facebook, и этот вызов, похоже, случайно не работает сегодня, поэтому у меня нет данных из Facebook или ошибки MySQL. Но, к моему удивлению, ни одно из данных решений, похоже, не связано с таймаутом.
Любые идеи? спасибо за ваше время!