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

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

Mongodb 對例程的查詢會產(chǎn)生巨大的堆棧跟蹤

Mongodb 對例程的查詢會產(chǎn)生巨大的堆棧跟蹤

Go
慕村225694 2021-11-15 17:09:30
我在 go 程序中對 api 進行了大量網(wǎng)絡調(diào)用,結(jié)果存儲在數(shù)據(jù)庫中(使用 mgo)。api 調(diào)用是在單獨的 go 例程上完成的。在其他例程中,我會在更新數(shù)據(jù)庫之前從數(shù)據(jù)庫中提取信息并對其進行處理。當數(shù)據(jù)被放回時,一個標志被設置,以便知道該數(shù)據(jù)已被后處理,因此當程序要求數(shù)據(jù)庫提供另一個條目以進行后處理時,數(shù)據(jù)庫將標志complete設置為false。當標志設置為true,則走常規(guī)關機:wg.done()。一切都很好,我有很多打印輸出告訴我程序是如何運行的,但是在運行結(jié)束時,我得到了一個巨大的堆棧跟蹤,其中包含許多相同的內(nèi)容:goroutine 56731 [sleep]: time.Sleep(0x12a05f200) /usr/local/Cellar/go/1.5/libexec/src/runtime/time.go:59 +0xf9 gopkg.in/mgo%2ev2.(*mongoServer).pinger (0xc82601b420, 0x1) /Users/alex/go/src/gopkg.in/mgo.v2/server.go:295 +0x1b4 由 gopkg.in/mgo%2ev2.newServer /Users/alex/go/src/gopkg 創(chuàng)建.in/mgo.v2/server.go:88 +0x162goroutine 56698 [sleep]: time.Sleep(0x12a05f200) /usr/local/Cellar/go/1.5/libexec/src/runtime/time.go:59 +0xf9 gopkg.in/mgo%2ev2.(*mongoServer).pinger (0xc82601bce0, 0x1) /Users/alex/go/src/gopkg.in/mgo.v2/server.go:295 +0x1b4 由 gopkg.in/mgo%2ev2.newServer /Users/alex/go/src/gopkg 創(chuàng)建.in/mgo.v2/server.go:88 +0x162goroutine 56699 [sleep]: time.Sleep(0x1dcd6500) /usr/local/Cellar/go/1.5/libexec/src/runtime/time.go:59 +0xf9 gopkg.in/mgo%2ev2.(*mongoCluster).syncServersLoop (0xc8256425a0) /Users/alex/go/src/gopkg.in/mgo.v2/cluster.go:353 +0x2b1 由 gopkg.in/mgo%2ev2.newCluster /Users/alex/go/src/gopkg.in 創(chuàng)建/mgo.v2/cluster.go:73 +0x1a0goroutine 56738 [sleep]: time.Sleep(0x12a05f200) /usr/local/Cellar/go/1.5/libexec/src/runtime/time.go:59 +0xf9 gopkg.in/mgo%2ev2.(*mongoServer).pinger (0xc82606fa40, 0x1) /Users/alex/go/src/gopkg.in/mgo.v2/server.go:295 +0x1b4 創(chuàng)建的 gopkg.in/mgo%2ev2.newServer /Users/alex/go/src/gopkg .in/mgo.v2/server.go:88 +0x162我正在努力弄清楚它告訴我什么,它是否鎖定寫入數(shù)據(jù)庫,例程是否沒有關閉以及某些東西是否超時,我不知道。順便說一句,我正在使用 go 1.5。
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

看起來引用的邏輯每次需要用它做某事時都會撥打 MongoDB,這不是在 HTTP 服務器中保持持續(xù)數(shù)據(jù)庫通信的合適方法。

每次Dial使用 MongoDB 服務器(或副本集或 mongos)時,都會啟動一些后臺活動,以保持集群拓撲在內(nèi)存中保持最新,并保持連接池正常(請注意,在此之后創(chuàng)建的所有會話單個Dial調(diào)用將共享一個連接池)。

Dial每次想要與數(shù)據(jù)庫交談時都調(diào)用意味著每個撥號的所有邏輯都變得獨立,并且在最后一個會話關閉后,后臺活動可能需要一段時間才能關閉。

因此,即使它可以工作,它也非常低效,因為它必須再次了解正在使用的拓撲,它無法使用來自現(xiàn)有池的連接,并且還會產(chǎn)生不必要的背景流失,這正是您在回溯中觀察到的。


查看完整回答
反對 回復 2021-11-15
  • 1 回答
  • 0 關注
  • 255 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號