我们最近从PHP 5.3(Debian Squeeze软件包,使用libmysqlclient和APC)将其中一个web服务器升级到了PHP 5.4(Debian Wheezy,Dotdeb软件包,使用mysqlnd,Opcache和APCu)。在工作了将近一天之后,我们遇到了“mysql服务器已经消失”的每个请求错误。具有相同负载的所有其他服务器仍然使用相同的MySQL服务器运行PHP 5.3并使用libmysqlclient完全没有问题。在我们使用的所有服务器上:“mysql server has gone away”的错误(php 5.4,mysqlnd)
max_execution_time = 60
default_socket_timeout = 60
在我们的PHP 5.3服务器上,我们没有更改任何mysql/my.cnf超时。我们知道有关read_timeout(mysql),wait_timeout(mysql),default_socket_timeout(php)和max_execution_time(php)的问题,但仅限于具有长时间运行查询的批处理脚本的上下文。我们的网络服务器通常在300ms内响应,所以这些超时应该不是问题。
当我们从负载平衡中移除服务器时,它变得非常奇怪,所以没有负载了,但我们仍然有180个繁忙的Apache进程。即使apache2ctl graceful
没有改变任何东西,甚至小时后apache2ctl status
说:
Apache Server Status for localhost
Server Version: Apache/2.2.22 (Debian)
Server Built: Jun 16 2014 03:51:14
__________________________________________________________________
Current Time: Tuesday, 22-Jul-2014 10:17:44 CEST
Restart Time: Monday, 21-Jul-2014 18:43:37 CEST
Parent Server Generation: 26
Server uptime: 15 hours 34 minutes 6 seconds
Total accesses: 596973 - Total Traffic: 1.6 GB
CPU Usage: u6288.72 s463.96 cu.01 cs0 - 12% CPU load
10.7 requests/sec - 30.8 kB/second - 2962 B/request
176 requests currently being processed, 99 idle workers
GGGGGG_GGGGGGGGG_GG_GGGGGGGGGGGGGGGGGGGG_GGGGGG_GGGGGGGG_GGGGGGG
GGGGGGGGGG_G_GGGGGGGG_G_GG__GGGGGG_GGGGG_GGG___GG_GGGGGGGG_G_GGG
GGGGGGGGGGGG_G_GG__GG_GGG_GGGGGGGGG__GGG_GGG_G_G_GG_G_GGGGGGGGGG
GGG_GGG_GG_GGG_GG_G_GGG_______________.___._W___________________
____.___________.______.........................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
....
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
只有apache2ctl restart
解决了问题,一切好起来的工作。 MySQL错误是我们迄今发现的唯一“有用的”错误消息。
它可能是一个问题与mysqlnd,opcache或apcu和PHP 5.4.30?是否有任何已知的问题可能导致我们所经历的行为?
或者你有一个想法如何调试“MySQL服务器已经消失”的问题?