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

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

쏘카
쏘카
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 최적화를 유도

쏘카 계열사 채용8건

채용 사이트에서 전체 보기

다음 읽기

#Kotlin 주제를 이어서 읽기

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

회원 서비스의 트랜잭션 범위, DTO 변환, Tomcat 스레드 설정을 분석해 병목을 제거했습니다. Repository 단위 트랜잭션과 웜업으로 응답 시간을 약 8배 개선했습니다.

쏘카
쏘카
백엔드
전체 보기

댓글 0개

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

댓글을 불러오는 중...