亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

戈朗 sql.DB 等待計數大于 0,即使池中有足夠的空閑連接

戈朗 sql.DB 等待計數大于 0,即使池中有足夠的空閑連接

Go
精慕HU 2022-09-26 14:49:35
我正在查看戈朗中一個Web應用程序的DBStats。這些指標每 10 秒通過 sqlstat 導出到普羅米修斯。在應用程序中, 設置為 100,并設置為 50。當我查看指標時,我注意到打開的連接數量穩定在50左右。這是意料之中的,這意味著我們將保留 50 個空閑連接。但是,連接數徘徊在 0 到 5 之間,并且大多數情況下為 0。這對我來說很奇怪,因為有源源不斷的流量流入,我不希望連接數為0。MaxOpenConnsMaxIdleConnsInUseInUse另外,我注意到并且非常大。 表示沒有空閑連接和 sql。由于限制,DB 無法打開更多連接。但從上面的統計數據來看,sql似乎有足夠的余量。DB來創建更多的連接(在下面)。大量的也暗示了sql。即使有足夠的空閑連接,DB 也會建立其他連接。WaitCountMaxIdleClosedWaitCountMaxOpenConnsOpenConnectionsMaxOpenConnections MaxIdleClosed同時,我在應用程序中觀察到一些錯誤,我們正在使用MySQL。driver: bad connection為什么當周圍有足夠的空閑連接時,應用程序會嘗試打開更多連接,我應該如何調整數據庫參數以減少問題?
查看完整描述

1 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

但是,InUse 連接的數量徘徊在 0 到 5 之間,并且在大多數情況下為 0。這對我來說很奇怪,因為有源源不斷的流量流入,我不希望InUse連接的數量為0。

這并不奇怪。InUse 連接的數量像尖峰一樣移動。由于您每10秒才獲得統計數據,因此您看不到峰值。

為什么當周圍有足夠的空閑連接時,應用程序會嘗試打開更多連接,

請參閱 https://github.com/go-sql-driver/mysql#important-settings

“數據庫。建議將“設置”等于(或大于)db。SetMaxOpenConns().當它小于 SetMax 打開康斯 () 時,連接可以比您預期的更頻繁地打開和關閉。

以及我應該如何調整數據庫參數以減少問題?

遵循 go-sql 驅動程序/我的 sql 自述文件的建議。使用 ,并將其設置為 。db.SetConnMaxLifetime()db.SetMaxIdleConns()db.SetMaxOpenConns()

db.SetMaxOpenConns(100)
db.SetMaxIdleConns(100)
db.SetConnMaxLifetime(time.Minute * 3)


查看完整回答
反對 回復 2022-09-26
  • 1 回答
  • 0 關注
  • 89 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號