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

小怪獸愛吃肉
TA貢獻1852條經(jīng)驗 獲得超1個贊
但是,InUse 連接的數(shù)量徘徊在 0 到 5 之間,并且在大多數(shù)情況下為 0。這對我來說很奇怪,因為有源源不斷的流量流入,我不希望InUse連接的數(shù)量為0。
這并不奇怪。InUse 連接的數(shù)量像尖峰一樣移動。由于您每10秒才獲得統(tǒng)計數(shù)據(jù),因此您看不到峰值。
為什么當周圍有足夠的空閑連接時,應(yīng)用程序會嘗試打開更多連接,
請參閱 https://github.com/go-sql-driver/mysql#important-settings
“數(shù)據(jù)庫。建議將“設(shè)置”等于(或大于)db。SetMaxOpenConns().當它小于 SetMax 打開康斯 () 時,連接可以比您預期的更頻繁地打開和關(guān)閉。
以及我應(yīng)該如何調(diào)整數(shù)據(jù)庫參數(shù)以減少問題?
遵循 go-sql 驅(qū)動程序/我的 sql 自述文件的建議。使用 ,并將其設(shè)置為 。db.SetConnMaxLifetime()
db.SetMaxIdleConns()
db.SetMaxOpenConns()
db.SetMaxOpenConns(100) db.SetMaxIdleConns(100) db.SetConnMaxLifetime(time.Minute * 3)
- 1 回答
- 0 關(guān)注
- 98 瀏覽
添加回答
舉報
0/150
提交
取消