우리는 우리의 MongoDB를 연결 수가이 사용하는 모니터 다음 connectionCount 일관 최대 섬뜩한 곳, 우리가 이상한 연결 누수 문제에 직면하고있다 그러나몽고 연결 산화 마그네슘 드라이버 10 초당 한 들어온다 카운트
http://godoc.org/labix.org/v2/mgo#GetStats
을 10 초당 1 개의 열린 연결로. (요청 여부에 관계없이). 나는 localhost에서 서버를 회전시키고, 거기에두고, 아무것도하지 않으며, conectionCount는 여전히 크립프 (creep) 할 것이다. 결국 접속 수는 최대 수천까지 늘어나서 app/db를 죽이면 앱을 다시 시작해야합니다.
디버깅하기에 충분하지 않을 수 있습니다. 누구든지 과거에 다룬 아이디어, 연결 누수가 있습니까? 어떻게 디버그 했습니까? 내가 이것을 디버깅 할 수있는 방법은 무엇입니까?
우리는 몇 가지 시도를했는데, 연결을 열고 카운터/디버깅 문을 넣을 수있는 코드에 대한 코드베이스를 검사했습니다. 지금까지 누출이 발견되지 않았습니다. 어딘가에 도서관에 누출이있는 것과 거의 같습니다.
이것은 우리가 작업 해 왔던 지점의 버그이며, 거기에는 몇 백 개의 커밋이 있습니다. 우리는 이것과 master 사이에 diff를 수행 했으므로이 브랜치에 연결 누수가있는 이유를 찾을 수 없습니다.
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 초당을 섬뜩한 수 있습니다 : 예를 들어
, 나는이 참조하고있는 데이터 세트가있다. 나는 다른 숫자가 의미 할 수있는 것을 완전히 확신하지 못한다.
감사합니다. Gustavo! socketsAlive와 SocketsInUse 및 SocketRefs의 차이점을 자세히 설명해 주시겠습니까? socketAlive가 SocketsInUse보다 작은 이유는 무엇입니까? – samol
물론 답장을 완료했습니다. –