繁体   English   中英

从PHP连接到我的localhost MySQL实例的间歇性错误:mysqli_connect():HY000 / 2013

[英]Intermittent error connecting to my localhost MySQL instance from 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服务器都在同一个盒子上运行,我通过localhost连接到MySQL。

此外,这是令人费解的,因为我的PHP脚本能够成功连接到MySQL服务器,可能有90%的页面。

我可以说,我的服务器有足够的RAM和CPU:

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脚本间歇性地失去与localhost上的MySQL服务器的连接?

我升级到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失败。 什么可能导致这个或我如何调试它的想法?

也许这个错误报告会有所帮助 - 似乎修复可能是为全局connect_timeout设置更高的超时。 它在MySQL 5.1的后续版本中设置为更高的值(10秒),而早期版本则为5秒。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM