2012-02-09 87 views
1

我的一個使用Apache + PHP + Mysql的站點沒有釋放連接。連接數量不斷增長。連接狀態是睡眠。與Mysql的連接未關閉

| 138 | root | localhost  | NULL | Sleep | 183 |  | NULL    | 
| 140 | root | localhost:50488 | A | Sleep | 256 |  | NULL    | 
| 142 | root | localhost:50512 | A | Sleep | 253 |  | NULL    | 
| 151 | root | localhost:50668 | A | Sleep | 222 |  | NULL    | 
| 152 | root | localhost:50684 | A | Sleep | 221 |  | NULL    | 
| 155 | root | localhost:50714 | A | Sleep | 214 |  | NULL    | 
| 157 | root | localhost:50751 | A | Sleep | 207 |  | NULL    | 

檢查哪個連接使用端口50488到MySQL的:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
mysqld 17147 mysql 15u IPv4 150696739  0t0 TCP localhost:mysql->localhost:50488 (ESTABLISHED) 
httpd 17487 apache 18u IPv4 150696738  0t0 TCP localhost:50488->localhost:mysql (ESTABLISHED) 

這是荒謬自PHP腳本時結束時自動關閉所述連接。

任何原因可能導致此問題?

+0

它可能是你的一些頁面運行得很慢,這意味着連接建立和頁面的頂部,隨後頁面仍然在等待其他資源的響應,然後mysql連接仍然是活動的解釋爲什麼連接處於睡眠狀態) – ajreal 2012-02-09 03:02:14

+0

@ajreal我可以確認頁面已成功結束。並且連接狀態正在休眠 – 2012-02-09 03:12:22

回答

0

在查詢的末尾添加mysql_close($connection); ...如果你有多個查詢在一個文件中,僅在文件的最後添加它,就像這樣:

</body> 
</html> 
<?php 
    mysql_close($connection); 
?> 

* WHERE $connection是變量給予mysql_connect()

它會關閉連接。

1

問題是由

  1. @ignore_user_abort(TRUE)引起的;保持腳本永不死亡。

  2. 代碼有錯誤,連接未關閉。