簡體   English   中英

PHP,MySQL和“睡眠”連接

[英]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_timeoutinteractive_timeout變量更改為小值

也許在centos中的my.cnf文件中更改

你在使用持久連接(mysql_pconnect())嗎? 如果配置不當,他們就有這種無限期留守的習慣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM