Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ /

인그레스 연결 설정 속도 제한기 구성

이 절차에서는 MongoDB 에서 ingressConnectionEstablishmentRateLimiterEnabled 매개변수를 사용하여 속도 제한을 구성하는 방법을 설명합니다. 속도 제한기는 시스템 안정성과 성능에 영향 수 있는 연결 폭풍으로부터 배포서버 보호하는 데 도움이 됩니다.

이 절차를 시작하기 전에 다음 요구 사항을 충족하는지 확인하세요.

  • MongoDB deployment 에 대한 관리 권한이 있습니다.

  • 시스템의 연결 부하 패턴 및 요구 사항을 이해합니다.

  • 드라이버의 connectTimeoutMS 설정을 알고 있습니다.

1

속도 제한기를 사용하려면 먼저 ingressConnectionEstablishmentRateLimiterEnabled 매개변수를 true로 설정하여 활성화 .

db.adminCommand( {
setParameter: 1,
ingressConnectionEstablishmentRateLimiterEnabled: true
} )
2

ingressConnectionEstablishmentRatePerSec 를 처리량에 부정적인 영향을 주지 않고 클러스터가 처리할 수 있는 최대 속도로 설정합니다. 이 숫자는 다른 워크로드 역학에 따라 달라지지 않는 고정된 숫자여야 합니다.

db.adminCommand( {
setParameter: 1,
ingressConnectionEstablishmentRatePerSec: 20
} )
3

다음 공식에 따라 ingressConnectionEstablishmentMaxQueueDepth 를 설정합니다.

maxQueueDepth < (establishmentRatePerSec / 1000) * (connectTimeoutMs - ((averageTimeToCompletedHelloMicros-averageTimeQueuedMicros)*1000))

이 공식은 다음을 보장합니다.

  • 새로운 연결 시도는 운전자 연결을 포기한 시간이 지나면 대기열에 남아 있지 않습니다.

  • 대부분의 hello+auth 시도는 시간 초과 오류로 인해 실패하지 않고 성공합니다.

averageTimeQueuedMicros 지표는 약 (maxQueueDepth / establishRatePerSec) * 1e6와(과) 같으므로 ingressConnectionEstablishmentMaxQueueDepth 조정에 도움이 될 수 있습니다.

중요

대기열 크기를 조정할 때는 짧은 대기열 크기보다 긴 대기열 크기를 우선시합니다. 닫힌 연결로 인해 드라이버가 연결 풀을 지우는 것은 연결이 대기열에 너무 오래 남아 시간 초과되는 것보다 더 큰 위험이 있습니다.

4

연결 실패가 관찰되면 드라이버의 maxPoolSizemaxConnecting 설정을 낮추세요. 이러한 설정을 낮추면 지연 시간 길어져 연결 폭풍이 발생할 수 있는 기간 동안 운전자 서버 에 대한 연결을 더 많이 여는 대신 연결을 재사용합니다.

참고

maxPoolSizemaxConnecting를 줄이면 쿼리가 연결이 풀로 반환될 때까지 운전자 계층에서 더 오랜 시간을 보낼 수 있습니다. 이러한 설정을 줄이면 부하가 급증하는 동안 지연 시간 비용 하지만 가용성을 유지하는 데 도움이 됩니다.

다음 지표 모니터링하여 속도 제한기를 올바르게 구성했는지 확인합니다.

거부된 연결의 수가 증가하는 경우 다음 사항을 고려하세요.

  1. 클러스터 이 로드를 처리하다 에 충분한 CPU 리소스가 있는 것으로 보이면 ingressConnectionEstablishmentRatePerSec 를 늘립니다.

  2. 공식에 따라 ingressConnectionEstablishmentMaxQueueDepth 를 조정합니다.

  3. 운전자 연결 풀 설정 검토.

이 페이지의 내용