亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang :連接數據庫閑置斷線的問題

發布時間:2020-06-24 17:24:24 來源:網絡 閱讀:572 作者:xsster 欄目:數據庫
golang在進行數據庫操作,一般來說我們使用Open函數創建一個數據庫(操作)句柄:func Open(driverName, dataSourceName string) (*DB, error)
    我們知道,返回的*DB是一個具有零到多個底層連接的連接池,可以安全的被多個go程使用,并且會維護自身的閑置連接。所以一般來說open函數我們只調用一次,幾乎很少需要關閉DB。
    連接池可以使得連接更好的控制,于是簡單配置甚至是不做什么配置就可以用了,事實好像也是如此,連上數據庫就都ok了。但是!你很可能會遇到下面這樣的錯誤:
[mysql] 2017/01/15 12:23:43 packets.go:124: write tcp 127.0.0.1:45697->127.0.0.1:3306:write: broken pipe
    其原因很有可能就是你的連接池沒有做好相關配置,或者配置了卻設置的值不對,那么超時的原因大概有以下幾點:
    1.最大連接數大于數據庫服務器端配置的最大連接數,多余的連接在被使用到的時候出現連接超時
    2.網絡抖動:每次連接的時候提交或維護大量數據,此時網絡不穩定導致連接超時
    3.占用的資源未被釋放,我們一般只open一次,獲取一個*DB,但是在使用stmt,rows或者是tx時候用完沒有關閉,耗盡資源也有可能導致連接超時。
    對于出現的3中問題,你可以試試下面的解決方案:
    1.對于最大連接數的問題,調用函數Db.SetMaxOpenConns()設置值(小于數據庫配置的最大連接)
    2.對于維護大量數據,可以嘗試采用事務操作,若失敗,回滾。然后重試。
    3.使用defer關鍵字,在啟用操作的時候直接在下一行加上defer *.close()函數return的時候會執行相關的關閉函數。
  如果你嘗試了以上的解決方案,還是發現偶爾會出現連接超時的錯誤的話,很可能是因為數據庫本身對連接有一個超時時間的設置,如果超時時間到了數據庫會單方面斷掉連接,此時再用連接池內的連接進行訪問就會出錯,連接池中的每個連接都維護了一個創建時間,取連接的時候會自動檢查的,你可以試試調用db的SetConnMaxLifetime()方法來給db設置一個超時時間,時間小于數據庫的超時時間即可。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东方市| 托里县| 郎溪县| 永寿县| 长宁区| 林西县| 福海县| 孟津县| 青海省| 淳安县| 昭苏县| 扬州市| 甘谷县| 宜丰县| 十堰市| 淳化县| 喜德县| 霸州市| 定州市| 海兴县| 沿河| 青海省| 香河县| 定兴县| 临漳县| 阿拉善右旗| 辽中县| 文山县| 依兰县| 丹东市| 山西省| 清涧县| 布尔津县| 法库县| 改则县| 舟山市| 洛浦县| 邵东县| 彩票| 会昌县| 香格里拉县|