我們監控使用這是我們的MongoDB連接數:蒙戈連接計數與氧化鎂司機攀升一個每10秒
http://godoc.org/labix.org/v2/mgo#GetStats
但是,我們一直面臨着一個奇怪的連接泄漏問題,即connectionCount一直向上蔓延每10秒多打開一次連接。 (不管是否有任何請求)。我可以在本地主機上啓動一個服務器,把它留在那裏,什麼也不做,conectionCount仍然會爬起來。連接數最終會蔓延到幾千,然後它殺死應用程序/數據庫然後我們必須重新啓動應用程序。
這可能沒有足夠的信息供您調試。有沒有人有任何想法,你曾經處理過的連接泄漏。你是如何調試它的?我可以調試的方式有哪些?
我們已經嘗試了一些東西,我們掃描我們的代碼庫,可以打開一個連接,並把計數器/調試語句那裏,到目前爲止,我們沒有發現泄漏的任何代碼。這幾乎就像某處圖書館有泄漏。
這是我們一直在努力的一個分支中的錯誤,也有過幾百個提交了進去。我們已經做了這個和主人之間的差異,並找不到爲什麼在這個分支有連接泄漏。
作爲一個例子,存在我引用數據集:
Clusters: 1
MasterConns: 9936 <-- creeps up 1 per second
SlaveConns: -7359 <-- why is this negative?
SentOps: 42091780
ReceivedOps: 38684525
ReceivedDocs: 39466143
SocketsAlive: 78 <-- what is the difference between the socket count and the master conns count?
SocketsInUse: 1231
SocketRefs: 1231
MasterConns是蠕升每10第二個的數量。我不完全確定其他數字的含義。
謝謝古斯塔沃!你能否請詳細說明socketsAlive與SocketsInUse和SocketRefs之間的區別?爲什麼socketAlive少於SocketsInUse? – samol
當然,完成了迴應。 –