MySQL sleep進程串連過多卡住了問題解決辦法

來源:互聯網
上載者:User

MySQL sleep進程串連過多原因分析

當php的頁面執行結束時,會自動釋放掉一切。相信很多人都跟我想的一樣。但事實證明並不是這樣。比如session就不會隨著頁面執行完畢而釋放。

php的記憶體回收機制,其實只針對於php本身。對於mysql,php沒權利去自動去釋放它的東西。如果你在頁面執行完畢前不調用mysql_close(),那麼mysql那邊是不會關閉這個串連的。如果你是用的是pconnect方式,即使你在頁面執行完畢前調用mysql_close(),也無法另mysql關閉這個串連

mysql中睡眠串連會對mysql伺服器造成影響

嚴重消耗mysql伺服器資源(主要是cpu, 記憶體),並可能導致mysql崩潰。

造成睡眠串連過多的原因?

1. 使用了太多持久串連(個人覺得,在高並發系統中,不適合使用持久串連)

2. 程式中,沒有及時關閉mysql串連

3. 資料庫查詢不夠最佳化,過度耗時。

那麼,如果要從根本上解決sleep串連過多,就得從以上三點反覆檢查,但是見效並不快。

在mysql的設定檔中設定自動關閉連結時間過長的進程:

修改mysql的設定檔my.cnf , window系統中是my.ini

[mysqld]
......
wait_timeout=100
interactive_timeout=100

wait_timeout=100 #即設定mysql串連睡眠時間為100秒,任何sleep串連睡眠時間若超過100秒,將會被mysql服務自然終止。

設定好後重啟mysql

service mysqldrestart

修改mysql佔用記憶體的參數如下:

table_open_cache=2000 改為

table_open_cache=256
table_definition_cache=1400 改為

table_definition_cache=400

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.