목록 보기
싱글벙글 회원 서비스 성능 튜닝기
백엔드

싱글벙글 회원 서비스 성능 튜닝기

쏘카
쏘카
2023년 7월 22일

두줄요약

회원 서비스의 병목 원인을 트랜잭션, DTO 변환, 스레드 설정에서 찾았습니다. 읽기 트랜잭션 축소, 수동 매핑, 톰캣 스레드 조정과 웜업으로 응답 편차를 크게 개선했습니다.

문제 상황

  • 성수기·프로모션 트래픽 증가 시 회원 서비스의 응답 시간이 급격히 악화된 상황
  • 트래픽은 약 150% 증가했지만 응답 시간은 1000% 이상 증가해 병목 원인 분석 필요

원인 분석

  • 읽기 중심 메소드에 @Transactional이 걸려 DB 커넥션을 불필요하게 오래 점유하는 구조
  • ObjectMapper를 이용한 Entity→DTO 변환으로 리플렉션과 불필요한 힙 할당 발생
  • 기본 Tomcat 스레드 수 200개가 1코어 환경에서 과도해 Context Switching 증가

해결 방법

  • 읽기 메소드의 트랜잭션 제거, Repository 범위로만 @Transactional(readOnly = true) 적용
  • DTO 변환을 Json 직렬화/역직렬화 대신 명시적 필드 매핑으로 변경
  • Tomcat 최대 스레드를 30개로 조정하고 애플리케이션 웜업 추가

성능/운영 포인트

  • DB 커넥션은 필요한 구간에서만 점유해 빠르게 반납하는 방향이 중요
  • 스레드 수는 많을수록 유리하지 않으며, CPU·메모리 자원에 맞는 임계치 탐색 필요
  • 초기 구동 지연은 주요 API 선호출로 클래스 로딩과 JIT 최적화를 유도

댓글 0

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

댓글을 불러오는 중...