91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

新宾| 孝义市| 奉节县| 巨野县| 任丘市| 望谟县| 涟水县| 张家界市| 伊宁市| 浦东新区| 扎兰屯市| 邯郸县| 云林县| 海盐县| 彰化县| 云阳县| 嫩江县| 凤山市| 永济市| 安化县| 玉田县| 乐安县| 蒙自县| 米泉市| 凉城县| 东乌珠穆沁旗| 井研县| 柞水县| 伊春市| 吉隆县| 化德县| 河北区| 黎平县| 旬邑县| 桑植县| 监利县| 正蓝旗| 澳门| 华蓥市| 清丰县| 定兴县|