Периодическая ошибка подключения к моему экземпляру MySQL на локальном хосте из PHP: mysqli_connect(): HY000/2013

У меня есть веб-сайт LAMP (PHP/MySQL), и я очень полагаюсь на свою базу данных MySQL.

В последнее время периодически возникает следующая ошибка:

[30-Oct-2011 16:11:49] PHP Warning:  mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'sending authentication information', system error: 32 in /home/path/to/my/code.php on line 1029

Это строка 1029, конкретная строка, которая иногда дает вышеуказанную ошибку:

$db = mysqli_connect($cfg['db_location'], $cfg['db_reader_username'], $cfg['db_reader_password']);

где $cfg['db_location'] является "localhost"и имя пользователя и пароль верны.

Кажется, что-то заставляет мой PHP-скрипт периодически терять соединение с сервером MySQL, что меня озадачивает, потому что все мои MySQL-соединения сделаны с localhost. То есть PHP-скрипт и сервер MySQL работают на одном компьютере, и я подключаюсь к MySQL через localhost.

Кроме того, это озадачивает, потому что мой PHP-скрипт может успешно подключаться к серверу MySQL, возможно, на 90% страниц.

Насколько я могу судить, мой сервер имеет много свободной оперативной памяти и процессора:

top - 16:38:23 up 173 days, 19:19,  2 users,  load average: 0.57, 0.78, 0.84
Tasks: 142 total,   4 running, 137 sleeping,   0 stopped,   1 zombie
Cpu(s): 18.7%us, 27.5%sy,  0.7%ni, 52.6%id,  0.2%wa,  0.1%hi,  0.2%si,  0.0%st
Mem:   2976260k total,  1861368k used,  1114892k free,   532628k buffers
Swap:  2048248k total,      116k used,  2048132k free,  1035804k cached

И много свободного дискового пространства. Когда я бегу df -hвсе мои файловые системы используются максимум на 25%.

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

Любые идеи, что может быть причиной того, что мой скрипт PHP периодически теряет соединение с моим сервером MySQL на localhost?

Я обновился до MySQL 5.1, и вот что теперь получается при запуске mysql -V:

mysql  Ver 14.14 Distrib 5.1.56, for pc-linux-gnu (i686) using readline 5.1

Те же ошибки все еще происходят, хотя:

[30-Oct-2011 20:26:18] PHP Warning:  mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'sending authentication information', system error: 32 in /home/path/to/my/code.php on line 1029

Как и прежде, ошибки продолжают прерываться.

После того, как я обновился до MySQL 5.1, я внимательно изучал журналы ошибок PHP. Я заметил несколько других ошибок, похожих на первую. Например, вот одна из таких ошибок:

[30-Oct-2011 22:42:29] PHP Warning:  mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'reading authorization packet', system error: 104 in /home/path/to/my/code.php on line 1029

И вот еще одна ошибка, которую я видел в моих журналах:

PHP Warning:  mysqli::mysqli() [<a href='mysqli.mysqli'>mysqli.mysqli</a>]: (HY000/2002): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/path/to/different/code.php on line 7

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

1 ответ

Возможно, этот отчет об ошибке поможет - кажется, исправление может заключаться в том, чтобы установить более высокий тайм-аут для глобального connect_timeout. В более поздних версиях MySQL 5.1 было установлено более высокое значение (10 секунд), а в более ранних версиях - 5 секунд.

http://bugs.mysql.com/bug.php?id=28359

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