我有一个 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 连接都是与本地主机建立的。也就是说,PHP 脚本和 MySQL 服务器都在同一个盒子上运行,我通过本地主机连接到 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 脚本间歇性地失去与本地主机上的 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 秒。
关于php - 从 PHP : mysqli_connect(): HY000/2013 连接到我的本地主机 MySQL 实例时出现间歇性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947704/