본문으로 이동
Feign 코드 분석과 서버 성능 개선
문서

Feign 코드 분석과 서버 성능 개선

김성두 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

약 15,000건의 데이터를 다중 스레드로 처리하던 중 서버가 느려지는 문제가 발생했고, 스레드 덤프의 `locked` 표시를 따라 원인을 조사했습니다. Feign의 기본 클라이언트가 `HttpURLConnection`을 사용하고, JDK 11의 내부 `KeepAliveCache`가 정적 공유 자원인 데다 `synchronized`로 보호되어 여러 스레드가 대기하는 것이 원인이었습니다. Spring Boot 2.x에서 Apache HttpClient 5 의존성만 추가하고 활성화 설정을 빠뜨린 점을 바로잡거나 JDK 17 이상으로 업그레이드해 해결할 수 있었습니다. 개선 후 API 처리량은 최소 8배 향상됐고, 약 10분 걸리던 작업이 1분대로 줄어 Feign의 실제 런타임 구현과 JDK 내부 동작을 확인하는 중요성을 얻었습니다.

  • Feign 의존성을 추가하는 것만으로 원하는 HTTP 클라이언트가 선택되는지 가정하지 말고, 실제 런타임 구현체를 확인하세요.
  • Spring Boot 2.x에서 Feign과 Apache HttpClient 5를 함께 쓸 때는 `feign.httpclient.hc5.enabled: true` 설정이 필요합니다.
  • 스레드 덤프의 `locked` 표시를 단서로 삼아 호출 경로를 추적하면 공유 자원과 동기화 지점을 찾는 데 도움이 됩니다.
  • JDK 17 이상으로 업그레이드하거나 Feign의 HTTP 클라이언트를 교체하는 방식으로 문제를 해결할 수 있습니다.

소개

Feign과 다중 스레드를 사용하는 과정에서 생긴 문제를 이해하고 성능 개선까지 한 경험을 공유해요.

비슷한 학습 자료

컨퍼런스 SLASH

서비스 운영 과정 속 여러 장애들, 어떻게 그 원인을 빠르고 정확하게 파악할 수 있을까요? 상황에 맞는 다양한 ‘프로파일러’로 문제 원인을 파악하고 또 해결한 과정을 소개합니다. 조유성 / 토스 Frontend Developer 발표 자료 👉🏻 https://bit.ly/42ypWpE 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://bit.ly/43kW3tO 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im 토스에 합류하고 싶다면 👉🏻 https://toss.im/career/jobs #profiler #서비스성능 #serverdeveloper #토스 #개발자컨퍼런스 #SLASH *본 발표자료의 저작권은 연사에 있으며, 저작권자의 사전 서면 동의 없이 자료의 일부 또는 전부를 이용하거나 배포할 수 없습니다. *또한 해당 자료를 복제하여 SLASH 행사 홈페이지를 제외한 온라인상에 게재하는 행위는 연사가 동의한 저작...

백엔드 데브옵스 · 인프라 로드맵 2개에 담김

문서 박지원

Spark Connect 서버에 세션이 몰리면, 무거운 작업이 다른 사용자까지 느리게 만들고 그 서버가 죽는 순간 모두가 실패합니다. 이 문제들을 어떻게 풀었는지 공유합니다.

데브옵스 · 인프라 클라우드

문서 이세찬

토스페이먼츠 데이터 엔지니어링 팀이 50억 건의 데이터를 1초 이내로 조회하는 시스템을 구축한 이야기를 들려드려요.

백엔드 데이터베이스

문서 류경린

대출 연동 테스트의 안정성과 효율성을 극대화하는 mock 서버 개발기의 후속 내용을 공유합니다.

백엔드 소프트웨어 테스트

문서 정진우/문현경

SSR 서버 최적화로 비용 아끼기

문서 정진우/문현경

오늘은 SSR 아키텍처 운영을 위해 반드시 알아두어야 할, SSR 서버의 최적화와 관련된 이야기를 해보려 합니다. 최적화를 통해 토스는 서비스 운영에 필요한 SSR 서버의 수를 절감하여 비용을 개선할 수 있었습니다.

프론트엔드 데브옵스 · 인프라

문서 강민주

토스페이먼츠 정산 플랫폼에서 많은 양의 정산 데이터 처리 과정에서 생긴 지연 이슈를 처리한 방법을 소개해요.

백엔드 데이터베이스 네트워크