'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선
읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.
엔진엑스 인그레스 컨트롤러의 프로메테우스 지표 병목 현상: 원인 분석과 해결 (1부) - tech.ka
Ingress Nginx Controller의 Prometheus Metric 병목 현상: 원인 분석과 해결 (1부)
개요
-
Ingress Nginx Controller에서 Prometheus Metrics 수집 시 발생하는 병목 현상을 경험했다.
-
이 문제는 서비스의 성능 저하와 응답 지연을 초래했다.
-
문제의 원인을 분석하고 해결하기 위한 과정을 공유한다.
문제 상황
-
타게팅 광고 서빙 시스템에서 Ingress Nginx Controller를 사용 중이었다.
-
서비스 지표 수집을 위해 Prometheus Metrics를 활성화했다.
-
트래픽 증가 시 Ingress의 응답 시간이 급격히 상승하는 문제가 발생했다.
원인 분석
Prometheus Metrics 엔드포인트의 과부하
-
/metrics 엔드포인트에 대한 과도한 스크래핑 요청이 있었다.
-
Prometheus 서버가 Metrics를 수집하기 위해 일정 주기로 요청을 보내는데, 대상이 되는 Ingress Nginx Controller 인스턴스가 많았다.
-
Metrics 수집에 필요한 리소스 소비로 인해 본래의 트래픽 처리가 지연되었다.
Nginx Worker 프로세스의 한계
-
Nginx는 기본적으로 이벤트 루프 기반의 단일 스레드 워커 프로세스를 사용한다.
-
Metrics 수집에 대한 처리도 동일한 워커 프로세스에서 수행되어 리소스 경쟁이 발생했다.
해결 방안
Metrics 수집 주기 조정
-
Prometheus의 스크래핑 주기를 늘려 Metrics 요청의 빈도를 낮췄다.
Metrics 전용 엔드포인트 분리
-
Metrics 수집을 위한 전용 Ingress 또는 서비스로 분리하여 본래 트래픽과 격리했다.
Nginx 설정 최적화
-
워커 프로세스의 수를 증가시켜 병렬 처리가 가능하도록 설정했다.
-
Metrics 엔드포인트에 대한 제한을 설정하여 과도한 접근을 방지했다.
함께 읽으면 좋은 참고 자료
-
"Kubernetes에서의 Ingress Nginx 성능 최적화 방법"
-
"Prometheus Metrics 수집 시 발생하는 성능 이슈와 해결책"
-
"Nginx의 아키텍처와 워커 프로세스 관리"