백만 건 중 단 한 건의 실패를 디버깅하다: Pinte... 노트

백만 건 중 단 한 건의 실패를 디버깅하다: Pinterest의 검색 인프라를 쿠버네티스로 마이그레이션

Pinterest의 검색 인프라인 Manas는 Kubernetes로 마이그레이션되었지만, 백만 건의 검색 요청 중 하나가 평소보다 100배 더 오래 걸리는 성능 문제가 발견되었습니다. 이 문제는 조사되었고, 모니터링 프로세스인 cAdvisor가 문제를 일으키고 있음이 밝혀졌습니다. cAdvisor는 프로세스가 참조하는 총 메모리 바이트를 계산하기 위해 30초마다 전체 페이지 테이블을 스캔하고 있었는데, 이는 Manas의 메모리 집약적인 리프 처리와 경합을 유발했습니다. 이것이 검색 요청의 지연 시간 급증을 야기한 원인이었습니다. 조사는 검색 시스템 프로파일링, 성능 문제 디버깅, Linux 커널 기능 및 메모리 관리 등을 포함했습니다. 근본 원인은 기본적으로 활성화되어 메모리 경합을 유발하는 cAdvisor의 WSS(Working Set Size) 추정으로 파악되었습니다. 이 문제는 모든 PinCompute 노드에서 cAdvisor의 WSS 추정을 비활성화함으로써 해결되었습니다. 이 수정은 Pinterest의 Kubernetes 플랫폼에 중요한 이정표가 되어 다른 온라인 서비스들이 플랫폼으로 이전될 수 있도록 했습니다. 이번 조사는 리소스 격리, 문제 공간 축소, 블랙박스 디버깅 전략 활용의 중요성을 강조했습니다. 또한, 때로는 '충분히 좋은' 해결책만으로도 충분하며, 앞으로 나아가기 위해 완벽한 해결책을 찾을 필요는 없다는 것을 보여주었습니다.
CdXz5zHNQW_dc6w46JhEJ.png