sqlalchemy數據庫連接異常

遇到這種情況,小記一下。

發現服務運行得好好的,連接數據庫的時候隔一段時間就會報數據庫連接異常,看了一下日誌報一個“error during Connection reset by peer”——報錯十分直觀 ,就是數據庫主動斷開了連接。

查詢發現sqlserver設置了X分鐘的超時時間,如果超過這個時間數據庫連接線程沒有任何操作,sqlserver會主動把連接斷開以節約資源。所以,如果數據庫操作完成,應該由應用程序把數據庫連接主動斷開。

sqlalchemy是維護了一個數據庫連接池,因此,只要程序還在運行,連接池裏的默認是有保持與數據庫的長連接線程存在。

因此,我們把sqlalchemy裏的數據庫連接時間設置小於X分鐘。設置方法爲SQLALCHEMY_POOL_RECYCLE=XXX(這裏的單位是秒)

 

相關參數:

SQLALCHEMY_POOL_RECYCLE:自動回收數據庫連接的秒數。

SQLALCHEMY_POOL_SIZE:數據庫連接池的大小,默認爲5

SQLALCHEMY_POOL_TIMEOUT:指定數據庫連接池的超時時間,默認爲10秒。

 

參考資料:

http://www.pythondoc.com/flask-sqlalchemy/config.html    這個是sqlalchemy相關參數的解析,還很詳細的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章