[英]PHP, MySQL and “sleeping” connections
我正在運行一個由PHP / MySQL驅動的Web服務,最近發現了一個奇怪的問題。
當我運行“show full processlist;”時 通過SSH終端的SQL命令,我注意到幾個“睡眠”連接:
| Id | User | Host | db | Command | Time | State | Info |
+-----------+---------+-----------+---------+---------+------+-------+-----------------------+
| 218121282 | test_user | localhost | test_db | Sleep | 0 | NULL | NULL |
這些“睡眠”連接是否因為在腳本末尾沒有使用mysql_close()而發生?
如果這是原因,我可以通過使用“register_shutdown_function”PHP函數並在回調函數上運行mysql_close()來解決這個問題嗎?
謝謝你的建議。
這些“睡眠”連接是否因為在腳本末尾沒有使用mysql_close()而發生?
不管怎樣,MySQL連接在腳本末尾都會關閉,除非它們是持久的。
這些休眠連接意味着您要么使用持久連接,要么在某個地方出現問題導致MySQL連接長時間保持打開狀態,這可能是因為PHP腳本運行時間很長,或者其他情況。
如果您不知道是否需要持久連接,那么關閉它們可能是個好主意。 與流行的建議相反,在很多情況下,他們實際上可能會產生比他們解決的問題更多的問題,例如導致您更快地耗盡資源。 但是,在某些特定情況下需要它們,但是您需要知道自己在做什么,不知道自己在做什么,以避免可能會打開並讓數百個連接長時間處於睡眠狀態的情況等
將wait_timeout
和interactive_timeout
變量更改為小值
也許在centos中的my.cnf文件中更改
你在使用持久連接(mysql_pconnect())嗎? 如果配置不當,他們就有這種無限期留守的習慣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.