mysql連接允許長連接和短鏈接,但是本身建立連接會有很大開銷所以一般連接mysql會使用長連接。但是全部是使用長連接后,可能會出現mysql有時占用內存漲的特別快,這是因為mysql在執行過程中臨時使用的內存是管理在連接對象里面的。這些資源會在連接斷開的時候才釋放。所以如果長連接累計下來,可能導致內存占用太大,被系統強制kill(OOM),從現象看mysql異常重啟了。
怎么解決這個問題呢?有一下兩種方案
1、定期斷開長連接。使用一段時間或者程序判斷在執行一個占用內存的大查詢后斷開連接,之后查詢再從新連接
2、在mysql 5.7或者更新版本,可以在每次執行一個比較大的操作后執行 mysql_reset_connection來重新初始化連接資源。這個過程不需要重連和重新做權限驗證,但是會將連接恢復到剛剛創建完時的狀態