Yappi로 Python 서버 성능, 50% 더 빠르게!
by DD
11개월 전
조회수 22
Python 서버 성능 개선을 위해 Yappi 프로파일링 도구를 도입하여 병목 지점을 분석함
FastAPI 미들웨어 적용 및 JSON 직렬화 최적화를 통해 응답 시간 단축
DB 쿼리 최적화 및 asyncio.gather() 문제 해결로 응답 시간 50% 감소 달성
Yappi를 활용한 프로파일링 과정
Yappi는 Python 코드의 성능 병목 지점을 파악하는 데 사용되는 강력한 도구이다. FastAPI 미들웨어를 활용하여 프로파일링을 쉽게 활성화/비활성화할 수 있도록 구성했다. 구체적으로, API 응답 시간을 분석하여 JSON 직렬화 부분을 최적화했다.
asyncio와 DB 쿼리 최적화
asyncio.gather() 사용 시 호출 스택이 끊기는 문제를 해결하기 위해, 프로파일링 시에는 순차적으로 await를 사용했다. 따라서 DB 쿼리 결과를 Python 딕셔너리로 직접 변환하여 응답 시간 50% 단축을 달성했다. 반면, deepcopy 연산은 성능 저하의 원인이었다.
프로덕션 환경에서의 Yappi 활용
Yappi는 프로파일링 오버헤드가 있으므로, 프로덕션 환경에서는 YAPPI_PROFILE_ENABLE과 같은 플래그를 통해 활성화/비활성화하는 것이 중요하다. 따라서 async 호출 스택 왜곡 문제를 인지하고, 병목 지점을 정확히 파악하는 것이 서비스 안정성을 확보하는 핵심이다.
댓글 0
첫 번째 댓글을 남겨보세요!