Мы отслеживаем количество подключений к mongoDB, используя это:
http://godoc.org/labix.org/v2/mgo#GetStats
Однако мы столкнулись со странной проблемой утечки соединения, когда connectionCount постоянно увеличивается на 1 открытое соединение за 10 секунд. (Это независимо от того, есть ли какие-либо запросы). Я могу раскрутить сервер в localhost, оставить его там, ничего не делать, conectionCount все равно будет ползти. Количество подключений в конечном итоге достигает нескольких тысяч, и тогда приложение / БД убивает, и нам приходится перезапускать приложение.
Этой информации может быть недостаточно для отладки. У кого-нибудь есть идеи, утечки связи, с которыми вы сталкивались в прошлом. Как вы его отладили? Каким образом я могу отладить это.
Мы попробовали несколько вещей, мы просканировали нашу кодовую базу на наличие любого кода, который мог бы открыть соединение и поместить туда счетчики/операторы отладки, и до сих пор мы не обнаружили утечки. Это похоже на утечку где-то в библиотеке.
Это ошибка в ветке, над которой мы работали, и в нее было внесено несколько сотен коммитов. Мы провели сравнение между this и master и не смогли найти причину утечки соединения в этой ветке.
В качестве примера есть набор данных, на который я ссылаюсь:
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 секунд. Я не совсем уверен, что могут означать другие цифры.