회고 & 기록/기타 경험기

[트러블슈팅] 람다 - 파이썬 3.10 → 3.12 업데이트 이후 에러 발생

yubi5050 2026. 5. 6. 11:30

🧩 문제 상황

파일을 업로드 권한을 가져오는(presigned-upload)와

S3 내 파일 이동/복사(copy) 기능을 가진 서비스를 운영 중이었는데,

 

Lambda Runtime을 Python 3.10 → 3.12 로 전환한 이후

 

일부 요청에서 다음 이슈가 발생하였다.

  • Timeout 발생 (런타임 전환 이후 일부 구간에서 발생)
  • 메모리 사용량 증가 (기존 128MB 환경)
  • OOM 추정 로그 발생

 

🚨 확인하면서 알게 된 것들

1. Lambda 로그는 요청 단위가 아니라 execution environment 기준

여러 요청 로그가 한곳에 섞여 보임

알고 보니 Lambda CloudWatch Log Stream은

execution environment(=warm container)

기준으로 이어서 기록된다.

 

즉 warm 상태로 재사용되면, 여러 요청 로그가 같은 stream 파일에 누적되어 조회된다.

 

 

2. Python 메모리 사용량은 lambda container warm 상태에서 유지될 수 있음

콜이 끝났더라도 파이썬은 메모리를 바로 반환하지 않음. 

+ Lambda warm environment 재사용 구조와 결합 되어, 

메모리 사용량이 누적되는 것처럼 보이는 현상

이 나타나 OOM이 발생할 수 있다는 점을 알게 되었다.

 

 

3. Lambda는 동시성 기반으로 execution environment를 확장

요청이 많아지면 Lambda는

동시 요청 수에 따라 execution environment를 추가 생성

한다.

 

즉

- 요청 적음 → environment 정리 가능

- 요청 많음 → environment 증가

형태로 동작한다.

 

결론

 

문제 결론

  • runtime 변경되면서, 사용되는 메모리의 증가 (기존에는 여러 조건이 안정적으로 맞아떨어졌던 듯 함)
  • lambda의 warm reuse 패턴으로 인해, 누적으로 쌓이던 메모리가 반환되지 않고 늘어나 OOM 발생
  • 트래픽이 environment 정리 전까지를 넘어섬.

 

해결

  • Lambda Memory를 128MB -> 256MB 로 증가
  • Lambda는 메모리 증가 시 CPU 리소스도 함께 증가하기에
  • 실행 안정성 측면에서 도움됨

 

기타 알게 된 것

  • Lambda 로그는 execution environment 기준으로 누적됨
  • Python allocator 특성상 메모리가 좀 더 유지될 수 있음
  • Warm environment에서는 메모리 사용량 누적처럼 보이는 현상이 나타날 수 있음
  • Lambda는 동시성 기반으로 environment를 확장함

 

🔥 한줄 요약

Lambda 128MB 환경은 생각보다 빠르게 한계에 도달할 수 있다