负载下PHP与MySQL(单独框)通信中断


Under load PHP communications with MySQL (seperate box) breaks

今天我们网站的用户增加了(大约是正常负载的两倍),我们的系统开始变慢。我们的MySQL位于它自己的物理盒上,我们已经开始在日志中收到这些错误;

[Mon Jul 18 15:30:07 2011] [error] [client 2.221.255.55] PHP Warning: mysql_select_db() [<a href='function.mysql-select-db'>function.mysql-select-db</a>]: A link to the server could not be established in /home/livesite/_util.inc on line 301, referer:

MySQL盒子很好,并且很高兴地响应我们的开发服务器,但是我们的活动服务器,随着负载的增加,看到这个错误消息。

有谁知道为什么PHP会在另一个盒子上停止与MySQL的通信?

您的连接限制可能过低。通常你会得到一个不同的错误,但如果这是问题,我不会感到惊讶:

http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

我怀疑第301行正在调用某些函数,例如mysql_real_escape_string(),这解释了错误。可能有一个不同的错误连接,如"太多的连接",但这不会在你的日志,如果你的连接线有一个@在它的前面。

也许你应该看看你的PHP INI文件中的mysqli。Max_persistent之类的?也许你的逻辑连接没有断开-足够快吗?