프로파일링으로 쿠키런 서버 성능 7배 향상!
by DD
5년 전
조회수 12
Artillery를 활용한 부하 테스트 결과, 10 RPS의 낮은 성능을 확인
Linux perf를 통해 node-canvas의 drawImage 함수에서 병목 현상 발견
이미지 리사이징 최적화를 통해 7배 성능 향상 및 응답 시간 50% 감소 달성
Artillery를 활용한 부하 테스트
Artillery를 사용하여 시민권 발급 서비스의 부하를 테스트했다. YAML 기반의 설정 파일로 다양한 시나리오를 정의하고, Node.js 환경에서 쉽게 테스트를 수행했다. 따라서, 서버의 초당 요청 처리량(RPS)과 응답 시간을 측정하여 성능 병목 지점을 파악했다.
Linux Perf를 이용한 프로파일링
Docker 컨테이너 환경에서 Linux perf를 사용하여 서버의 성능을 분석했다. Flamegraph를 통해 drawImage 함수 내 bits_image_fetch_convolution_affine_reflect_a8r8g8b8 함수가 병목임을 확인했다. 이미지 리사이징 과정에서 발생하는 문제점을 파악하여 성능 개선의 단서를 찾았다.
이미지 리사이징 최적화 전략
drawImage 함수 호출 시, 원본 이미지 크기를 고려하여 dWidth, dHeight 값을 조정했다. 이미지 리사이징을 미리 수행하여 CPU 부하를 줄였다. 결과적으로, 7배의 성능 향상과 응답 시간 50% 감소를 달성하여 서비스의 안정성을 확보했다.