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

У меня есть веб-сайт 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 Ответ

2 голосов
/ 31 октября 2011

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

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

...