자바 주소 가져오기 InetAddress 성능 이슈

dropKick·2024년 4월 8일

개발 이슈

목록 보기
6/14

개요

  • 결제 취소 시 단건/다건 구분 없이 타임아웃 시간인 최대 3초 내 응답이 오던 서비스가 최소 5초 최대 15초 이상 5초 단위의 반복적 응답지연이 발생
  • 이슈는 클라이언트 <-> 인증 서버 <-> 결제 서버 중 클라이언트 <-> 인증서버 구간에서만 발생

이슈 파악

  • 종단과 종단간 통신 분석 결과
    • 특이사항 없음
  • 서비스 구성 방식 변경
    • Sync 방식 사용, 15초 이상 소요되는 통신 건 발생 시 사용자 응답도 동일하게 지연되는 상황 발생
    • Sync -> Async 변경
  • Async 변경 후에도 최대 응답 시간 자체가 길어지는 경우 응답 지연 발생

원인

  • 결제 요청 시 InetAddress의 반복적인 호출
  • 클라이언트 요청 진입 시 로깅을 위해 InetAddres를 호출하여 DNS IP 객체 생성

InetAddress의 심각한 성능 이슈

  • getLocalHost()
    • 내부적으로 DNS 서버로부터 가져온 데이터를 5초간만 캐싱
      이후 다시 도메인 검색 시 Synchronized 블록을 사용하여 멀티 스레드 환경에서 병목현상이 발생
  • 결론적으로 5초간 캐싱을 하기에 5초마다 레이턴시가 튀는 현상이 반복
    동기화 블럭 및 반복적인 DNS 서버 요청으로 인해 성능 이슈 발생

해결법

  • static으로 구성
profile
안아줘요

0개의 댓글