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

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

Google Cloud Datatore Go 客戶端默認不關閉連接?

Google Cloud Datatore Go 客戶端默認不關閉連接?

Go
狐的傳說 2023-07-26 17:37:20
我從 App Engine on Go 1.9遷移到1.11時遇到了很多問題。當我按照如何遷移的指南進行操作時,我注意到內存使用量瘋狂增長。之前它一直保持在50-60 MB左右,但現在它快速增長到1.5 GB ,并且實例開始出現故障。但后來我注意到所有顯示如何使用 GCP 數據存儲的示例都只是替換了之前的示例datastore.Get()和dsClient := datastore.NewClient(...) dsClient.get()然后,當我仔細觀察這個客戶端時,它創建了一個連接,但似乎從未關閉它,因此當我在defer dsClient.Close()創建一個新客戶端(基本上在每個調用處理程序中)后添加一個連接時,內存開始從大約60- 80 MB到 ~ 500 MB,然后丟棄;它一直這樣運行,但很穩定,所以我認為它時不時地進行一次 GC。然而,幾天后,它再次失敗,請求永遠持續下去,并且創建新實例,直到達到上限(之前失敗得更快)。所以我想知道是否應該在 main 中創建一個數據存儲客戶端?這是一個好的做法嗎?而且,如果是這樣,為什么所有示例都顯示它是在調用句柄中創建的,并且為什么從不調用來關閉連接?謝謝!
查看完整描述

1 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

我幾乎做了同樣的事情,但 godoc 說創建一個客戶端并將其重用于所有數據存儲操作。無需關閉連接。


    // Create a datastore client. In a typical application, you would create

    // a single client which is reused for every datastore operation.

    dsClient, err := datastore.NewClient(ctx, "my-project")

    if err != nil {

        // Handle error.

    }

https://godoc.org/cloud.google.com/go/datastore


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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