목록 보기
사전예약 서버 프로파일링으로 서버 병목찾아 개선하기
백엔드

사전예약 서버 프로파일링으로 서버 병목찾아 개선하기

데브시스터즈
데브시스터즈
2021년 2월 28일

두줄요약

Artillery와 Linux perf Flamegraph로 Node.js 이미지 생성 서버의 병목을 분석했습니다.\n불필요한 이미지 리사이징을 제거해 처리량을 10 RPS에서 70 RPS로 개선했습니다.

문제 상황

  • 요청 시점마다 node-canvas로 시민권 이미지 생성·S3 업로드가 필요한 고비용 서비스
  • 2코어·512MB 노드 9대 환경에서 10 RPS 수준, 요청당 1,400~1,600ms 소요

원인 분석

  • Node.js Inspector 프로파일에서 이미지 로드·합성 구간의 높은 실행 시간 확인
  • Docker 컨테이너에서 Linux perf와 Flamegraph로 bits_image_fetch_convolution_affine_reflect_a8r8g8b8 함수 비중 약 30% 확인
  • 고해상도 원본 이미지를 여러 차례 축소하는 drawImage 리사이징 연산의 픽셀 순회 비용

해결 방법

  • 원본 소스 이미지를 시민권 출력 크기에 맞춰 사전 리사이징
  • drawImage 호출 시 불필요한 dWidth, dHeight 제거로 런타임 리사이징 축소
  • Artillery 부하 테스트와 Node.js Profiler·perf Flamegraph를 결합한 개선 효과 검증

성능/운영 포인트

  • 70 RPS까지 처리량 향상, 기존 대비 약 7배 부하 수용
  • 요청 처리 시간 700~800ms로 감소
  • perf의 JavaScript 심볼 매핑을 위한 --perf-basic-prof 옵션과 컨테이너의 --privileged 설정

다음 읽기

같은 회사의 연관 글

쿠키런: 킹덤 런칭 회고

쿠키런: 킹덤 런칭을 앞두고 데브옵스 팀이 인프라와 데이터베이스, Kubernetes 운영 체계를 준비한 과정을 회고했습니다. 전사 테스트와 반복 부하 테스트로 규모를 검증했고, 런칭 후에는 모니터링과 스토리지 증가 추적까지 이어갔습니다.

데브시스터즈
데브시스터즈
데브옵스

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...