MongoDB 서버를 운영하다 보면 현재 몇 개의 클라이언트 연결이 열려 있는지, 그리고 추가로 몇 개의 연결이 가능한지 확인해야 할 때가 많습니다. 이러한 정보는 db.serverStatus() 메서드 하나로 손쉽게 조회할 수 있습니다.
serverStatus()로 연결 정보 조회하기
MongoDB 셸(mongo shell)에서 다음 명령어를 실행하면 서버의 전반적인 상태 정보를 확인할 수 있습니다.
> db.serverStatus();
이 명령은 호스트 정보, 가동 시간, 잠금 상태, 네트워크 통계 등 매우 방대한 출력 결과를 반환합니다. 그중에서 우리가 찾고자 하는 연결 관련 정보는 connections 필드에 담겨 있습니다.
"connections" : {
"current" : 1,
"available" : 999999,
"totalCreated" : 1
}connections 필드 주요 지표 해석
- current: 현재 서버에 열려 있는 활성 연결의 수입니다. 위 예시에서는 1개의 연결이 열려 있음을 의미합니다.
- available: 추가로 허용 가능한 남은 연결 수입니다. 기본 최대 연결 수(maxIncomingConnections)에서 현재 사용 중인 연결 수를 뺀 값입니다.
- totalCreated: 서버가 시작된 이후 생성된 연결의 누적 총합입니다.
위 예시에서 current가 1이고 available이 999999이므로, 이 서버는 약 100만 개까지 동시 연결을 처리할 수 있는 설정으로 운영되고 있으며 현재 거의 모든 연결 슬롯이 비어 있는 상태입니다.
연결 정보만 간단히 조회하기
전체 serverStatus 출력이 방대하기 때문에, 연결 정보만 곧바로 확인하고 싶다면 다음과 같이 특정 필드만 지정하여 조회하는 것이 효율적입니다.
> db.serverStatus().connections;
{ "current" : 1, "available" : 999999, "totalCreated" : 1 }참고: 최대 연결 수 확인 및 조정
서버가 허용하는 최대 연결 수는 다음 명령으로 확인할 수 있습니다.
> db.serverStatus().connections.available + db.serverStatus().connections.current;
또한 mongod 시작 시 --maxConns 옵션을 사용하거나 설정 파일에서 maxIncomingConnections 값을 지정하여 최대 연결 수를 조정할 수 있습니다. 운영 환경에서는 current 값이 지속적으로 증가하거나 available이 급격히 줄어드는지 모니터링하여, 연결 누수(leak)나 과부하 징후를 조기에 파악하는 것이 좋습니다.