카카오, 실시간 메시징 성능 테스트 및 Go pprof 병목 분석 기법 공개
핵심 내용
구독자 수와 발행량이 성능의 핵심 인자임을 확인하고, Go pprof를 통해 Fan-out 구조의 I/O 병목을 분석했다.
자세히 보기
카카오 인터랙션플랫폼 팀이 실시간 메시징 시스템의 성능 테스트 설계와 Go pprof를 활용한 병목 분석 기법을 공개했다. 성능 측정의 핵심 목적은 자원 효율성 비교이며, 테스트 기준 통일을 위해 구독자 수(N)와 메시지 발행량(M)을 주요 변수로 설정했다.
성능 테스트 환경 및 시나리오
실시간 메시징은 Subscribe와 Publish가 긴밀히 연결되어 있어 단순 요청/응답 트랜잭션으로 정의하기 어렵다. 테스트는 쿠버네티스 클러스터와 VM 인스턴스 환경에서 진행되었으며, 발행 클라이언트는 Redis에 직접 접근해 Fan-out 성능을 측정했다. 구독 클라이언트는 컨테이너 기반 다중 프로세스/스레드 환경으로 실제 요청 패턴을 재현했다.
초기 테스트 결과, 장비 리소스나 메시지 크기 등 다른 요인보다 구독자 수와 메시지 발행량이 성능에 가장 큰 영향을 미치는 것으로 확인되었다. 구독자 수 증가는 메모리 할당량과 CPU 사용량을, 발행량 증가는 I/O 연산과 CPU 사용량을 각각 증가시킨다.
Go pprof를 통한 심층 분석
단순 지표(CPU 100% 도달 등)만으로는 구체적인 병목 지점을 파악하기 어려웠기에 pprof 도구를 도입했다. CPU 프로파일링은 샘플링 방식으로 진행되며, top, list, web 명령어를 통해 함수별 CPU 점유율과 호출 그래프를 시각화한다.
분석 사례를 통해 중첩 호출 구조에서 하위 함수 시간이 상위 함수의 누적 시간(cum)에 포함되는 특성, 멀티 프로세서 환경에서 Total samples가 Duration을 초과할 수 있는 점 등을 확인했다. 특히 카리브(Caribe) 시스템 분석 결과, Publish 시 다수 Subscribe로 Fan-out 하는 과정에서 I/O 연산이 CPU 사용량의 대부분을 차지하는 것이 핵심 병목으로 지목되었다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.