我們最近從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服務器已經消失」的問題?