私は LAMP Web サイト (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 接続が localhost に対して行われているため、不可解です。つまり、PHP スクリプトと MySQL サーバーは両方とも同じボックスで実行されており、localhost 経由で MySQL に接続しています。
さらに、私の PHP スクリプトはおそらく 90% のページで MySQL サーバーに正常に接続できるため、これは不可解です。
私が知る限り、サーバーには利用可能な 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 への接続の失敗にあるようです。これを引き起こしている可能性のあるアイデア、またはそれをデバッグする方法はありますか?