DBAtlas · 데이터베이스 운영 아틀라스

애플리케이션 및 클라이언트별 연결 수 집계 (connection storm 진단)

MongoDB성능

명령어

// Total, available and rejected connection counts:
db.serverStatus().connections
// Count connections by application name and client IP:
db.getSiblingDB("admin").aggregate([
  { $currentOp: { allUsers: true, idleConnections: true } },
  { $group: { _id: { app: "$appName", client: { $arrayElemAt: [{ $split: ["$client", ":"] }, 0] } }, conns: { $sum: 1 }, active: { $sum: { $cond: ["$active", 1, 0] } } } },
  { $sort: { conns: -1 } },
  { $limit: 20 }
])

하는 일

서버의 총 연결 수와 사용 가능 연결 수를 보여 준 뒤, 열린 연결을 appName과 클라이언트 IP별로 활성 연결 수와 함께 그룹화한다.

사용 시점

연결 수가 갑자기 급증할 때, 'connection refused' 또는 pool timeout 오류 시, 어떤 애플리케이션 서버가 연결을 누수하는지 찾을 때.

주의

idleConnections: true는 모든 유휴 연결도 반환하므로 연결이 수천 개인 시스템에서는 출력이 크다. 그래서 $group으로 요약하는 것이 중요하다. client가 null인 행은 내부 스레드다. 연결 하나는 약 1 MB의 메모리를 소비하며 connection storm은 WiredTiger 캐시 밖의 메모리도 증가시킨다.

DBAtlas에서 열기 →

관련 항목