最近、Web サーバーの 1 つを PHP 5.3 (Debian Squeeze パッケージ、libmysqlclient と APC を使用) から PHP 5.4 (Debian Wheezy、Dotdeb パッケージ、mysqlnd、Opcache、APCu を使用) にアップグレードしました。ほぼ 1 日正常に動作した後、すべての要求で「mysql サーバーがなくなりました」というエラーが発生しました。同じ MySQL サーバーを使用して libmysqlclient で PHP 5.3 を実行している同じ負荷の他のすべてのサーバーでは、まったく問題はありませんでした。私たちが使用するすべてのサーバーで:
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) の問題についてはわかっていますが、実行時間の長いクエリを含むバッチ スクリプトのコンテキストでのみです。通常、Web サーバーは約 300 ミリ秒で応答するため、ここではタイムアウトは問題になりません。
サーバーをロードバランシングから外したときは本当におかしくなったので、もう負荷はありませんでしたが、まだ 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 サーバーがなくなった」問題をデバッグする方法を知っていますか?