第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何安全地丟棄 golang 數(shù)據(jù)庫/sql 池連接,例如當(dāng)它們指向只讀副本時(shí)?

如何安全地丟棄 golang 數(shù)據(jù)庫/sql 池連接,例如當(dāng)它們指向只讀副本時(shí)?

Go
胡子哥哥 2023-03-21 15:07:15
我們一直在使用 golangdatabase/sql和github.com/lib/pqPostgreSQL 集群,這意味著作為復(fù)制主服務(wù)器的某個(gè)數(shù)據(jù)庫服務(wù)器在先前的主服務(wù)器發(fā)生故障后可能是只讀副本。最近,我們的低使用率服務(wù)設(shè)法在其連接池中保留一個(gè)連接(沒有會(huì)打開第二個(gè)連接的并發(fā)請(qǐng)求),并且其目標(biāo)已降級(jí)為只讀副本。結(jié)果,對(duì)服務(wù)的每個(gè)寫入操作都失敗,直到它重新啟動(dòng)。如果與集群建立了新連接,就不會(huì)發(fā)生這種情況。問題是我找不到記錄在案的方法來丟棄某些類型錯(cuò)誤的連接。唯一database/sql聽起來正確的公共方法是Conn.Close將連接返回到池而不關(guān)閉它。不調(diào)用它會(huì)導(dǎo)致資源泄漏,最終使池?zé)o法使用。有沒有一種可持續(xù)的方法可以在應(yīng)用程序需要時(shí)擺脫連接?
查看完整描述

3 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

我相信在使用 時(shí)database/sql,答案是“否”,盡管我很樂意得到糾正。

不久前,出于類似的原因(無法控制低級(jí)別的連接),我們從database/sqlwith切換lib/pq到純 Go jackc/pgx ,并對(duì)結(jié)果感到滿意。該模塊提供了ConnPool.Reset聽起來像你在這里想要的東西:

Reset 關(guān)閉所有打開的連接,但讓池保持打開狀態(tài)。它旨在用于檢測(cè)到會(huì)中斷所有連接的錯(cuò)誤(例如網(wǎng)絡(luò)中斷或服務(wù)器狀態(tài)更改)。

在簽出連接時(shí)重置池是安全的。這些連接將在返回池時(shí)關(guān)閉。


查看完整回答
反對(duì) 回復(fù) 2023-03-21
?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

最好的選擇可能是 Postgres 的DISCONNECT命令。

_, err := conn.ExecContext(context.Background(), "DISCONNECT")

將導(dǎo)致連接從服務(wù)器端關(guān)閉。


查看完整回答
反對(duì) 回復(fù) 2023-03-21
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

我認(rèn)為您可以通過使用 Raw 函數(shù)并返回 driver.ErrBadConn 錯(cuò)誤來丟棄它:

conn.Raw(func(interface{}) error { return driver.ErrBadConn })


查看完整回答
反對(duì) 回復(fù) 2023-03-21
  • 3 回答
  • 0 關(guān)注
  • 151 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)