Python 3.8에서 3.10으로 업그레이드 중 발생한 Memory Leak 해결 과정
스토리 · Lyft 테크 · 2025.12.16
Lyft의 엔지니어링 팀이 Python 3.8에서 3.10으로 업그레이드하는 과정에서 겪은 실제 Memory Leak 사례를 공유합니다. Python 업그레이드 후 특정 서비스에서 latency spike와 메모리 사용량 증가가 관찰되었고, 이를 해결하기 위해 tracemalloc 기반의 프로파일링 도구를 사용하여 원인을 분석했습니다. 조사 과정에서 Gunicorn의 preload 설정이 USR2 신호를 처리할 때 프로세스를 종료시키는 문제와, urllib3 v1.26.16 버전이 gevent의 monkey patching과 충돌하여 connection pool을 제대로 반환하지 못하는 현상을 발견했습니다. 이 글은 복잡한 Memory Leak 문제를 해결하기 위한 디버깅 기술과 실무적인 팁을 제공합니다.