request-log-buffering

Request Log 모아서 저장하기

배경

  • 요청마다 로그를 DB에 저장하면 요청 처리 시간에 DB 쓰기 시간도 포함
  • 메모리 queue에 로그를 모으고 5분마다 저장하도록 변경

저장 시간 비교

  • 실제 서비스 코드와 별도 PostgreSQL 환경에서 로그 2,000건 저장
  • Java 21, Spring Boot 3.5.4, PostgreSQL 16.15
  • 단일 thread에서 실행
  • 실행 순서를 바꿔가며 방식별로 5회 측정. 아래 값은 중앙값
항목 매 요청 즉시 저장 모아서 저장
전체 저장 시간 4.517초 1.072초
성공 트랜잭션 수 2,000회 1회
INSERT 수 2,000회 2,000회
  • INSERT 횟수는 같고 트랜잭션 수 감소
  • DB 저장 시간 약 76% 감소. queue에서 기다리는 5분은 측정에서 제외
  • 저장 전에 프로세스가 종료되면 메모리에 쌓인 로그 유실 가능

서비스 코드