레몬베이스에서 Django와 Gunicorn으로 운영 중인 백엔드에서 배포하면 API 레이턴시가 5초 정도로 증가하는 문제를 발견하고 해결해나가는 과정을 정리한 글입니다. 실제 과정은 훨씬 험난했겠지만 글만 봐도 전체적인 접근해서 트러블슈팅의 정석이라는 생각이 들었습니다.


지금 사용하고 있는 Gunicorn이 내부적으로 어떻게 동작하는지를 자세하게 파악한 뒤에 문제되지 않는 부분을 제외한 다음에 추적했을 때 이미 preloading을 사용하고 있었는데도 배포직후에는 콜드스타트가 발생하고 있었기 때문에 preloading이 어떻게 동작하는지 자세히 파악해 보고 있습니다.


그럼에도 원인을 파악하기 어렵자 웹 프레임워크인 Django의 동작방식을 살펴보다가 urls.pyview 부분이 프리로딩이 되지 않은 것을 알게 되고 이때분에 레이턴시가 발생했다는 것을 발견하게 됩니다. 그 후 해당 부분이 프리로딩되도록 수정해서 문제를 해결합니다.


대부분의 트러블슈팅이 원인을 알면 간단하지만 알기 전에는 어렵기 마련인데 추적하는 과정을 잘 정리해서 재미있게 보았습니다.


https://blog.lemonbase.team/%EB%B0%B0%ED%8F%AC-%EC%8B%9C%EC%A0%90%EC%97%90-%EA%B8%89%EC%83%81%EC%8A%B9%ED%95%98%EB%8A%94-api-latency-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-django-gunicorn-%EC%82%AC%EB%A1%80-7f7a1da7b0aa

배포 시점에 급상승하는 API Latency 해결하기 — Django + Gunicorn 사례

Medium

배포 시점에 급상승하는 API Latency 해결하기 — Django + Gunicorn 사례

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 9월 6일 오후 12:55

 • 

저장 12조회 2,514

댓글 0