Mysql
MySQL:如何減少睡眠過程的超時?
當我執行“show processlist;”時,我得到了很多睡眠程序。
我在 my.cnf 中將 wait_timeout 和 interactive_timeout 設置為 60。但是,當程序列表上的時間 60 時,睡眠程序並沒有死亡。我發現當時間為 7900 時,睡眠程序死亡。發生了什麼?如何減少睡眠過程的超時?
如果您需要其他資訊,我會盡可能提供資訊。
更新
我在 mysql 上使用 root、read_only 和部署帳戶。我發現 root 和 read_only 帳戶執行正確。查詢->睡眠-(60sec)->釋放過程。
但是部署帳戶,用於連接rails伺服器和mysql,執行錯誤。查詢->睡眠-(7900sec)->釋放。所以,我認為部署帳戶或 Rails 是問題。但是,我不知道要解決這個問題。
要檢查您的空閒程序超時,您可以連接到
MySQL
然後執行以下命令:show variables like "%timeout%";
您需要檢查
wait_timeout
並interactive_timeout
根據這些值從結果中執行 MySQL 中的以下命令來設置它們:set global wait_timeout=XXX; -- where XXX equal value less than the original one set global interactive_timeout=XXX; -- where XXX equal value less than the original one
是什麼
sleep
意思?MySQL 程序已完成查詢的執行,但客戶端(Rails)沒有退出。
為什麼會這樣?
無論是 puma 還是 unicorn,它們都使用持久連接到數據庫,然後有很多空閒連接是正常的,其狀態是睡眠。
我應該擔心嗎?
如果這些睡眠連接來自 Rails Web 應用程序並且小於數據庫連接池大小的配置,則無需擔心。
如何解決?
set global wait_timeout=XXX; // wait_timeout is for non-interactive sessions. set global interactive_timeout=XXX; // interactive_time is for interactive sessions
參考