NAVER D2 · 2026. 10. 08.
Python의 GC가 멀티프로세싱과 만나면 생기는 일 - Python과 Airflow, 그리고 관련된 문제 해결기 2편
AI 엔지니어링 브리핑
Airflow에서 fork로 만든 Python worker의 메모리가 계속 증가하고 다른 프로세스가 재시작되는 원인을 Python의 가비지 컬렉터와 fork의 상호작용에서 찾아 해결한 과정을 설명합니다.
문제 & 배경
- 문제 & 배경: Airflow worker의 메모리가 시간이 지나며 계속 늘었고, MySQL 환경의 dag-processor가 간헐적으로 재시작되는 등 겉보기에는 다른 문제가 발생했습니다.
기술 & 해결책
- 기술 & 해결책: Memray로 불필요한 Kubernetes 모듈 전체 import와 SSL context 반복 생성 누수를 찾아 Airflow 3.1.2에서 수정했으며, Memray에 잡히지 않는 증가는 smem으로 프로세스 공유·비공유 메모리(PSS·USS)를 확인해 fork와 Python GC의 영향을 추적했습니다.
교훈 & 주의점
- 교훈 & 주의점: 힙 할당 도구만으로는 fork 이후의 메모리 증가를 놓칠 수 있으므로 Memray와 PSS·USS 같은 운영 지표를 함께 봐야 하며, 문제 분석 결과를 문서와 추적 기능으로 Airflow에 반영했습니다.
함께 읽을 글
내용이 비슷해요내용이 비슷한 글을 먼저 보여드려요. 같은 문제나 해결책을 다룬다는 뜻은 아니에요.