2011-10-30 19 views
2

我有一個LAMP網站(PHP/MySQL),而且我非常依賴我的MySQL數據庫。從PHP連接到我的localhost MySQL實例的間歇性錯誤:mysqli_connect():HY000/2013

最近,以下錯誤開始間歇地發生:

[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連接的全部都是本地主機。也就是說,PHP腳本和MySQL服務器都在同一個盒子上運行,並且我通過localhost連接到MySQL。

此外,這是令人費解的,因爲我的PHP腳本能夠成功連接到MySQL服務器,可能有90%的頁面。

盡我所知,我的服務器有足夠的可用內存和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 。任何想法可能會導致這種情況或我可以如何調試?

+0

什麼是mysql服務器版本? – 2011-10-30 20:53:27

+0

@Dagon'mysql Ver 14.12 Distrib 5.0.92,for pc-linux-gnu(i686)using readline 5.1' – Jonathan

+0

另一個有趣的觀察:我在我的數據庫上運行mysqlcheck。大多數時候我運行'mysqlcheck'的時候效果很好。然而,有一次我收到以下錯誤:'mysqlcheck:出現錯誤:2013:在'發送身份驗證信息'時連接到MySQL服務器失敗,系統錯誤:32嘗試連接時' – Jonathan

回答

相關問題