잡다한 IT 지식

AWS Lambda 503 Server Error: Service Unavailable for url 본문

AWS/트러블슈팅

AWS Lambda 503 Server Error: Service Unavailable for url

가나무마 2025. 7. 23. 12:00

문제 상황

부하테스트 중에

부하 테스트를 위해 Locust를 사용하여 서비스에 트래픽을 유입시켰고, 다음과 같은 문제가 발생했다.

- RPS 30 ~ 40 수준에서 HTTP 503 Service Unavailable 에러가 반복적으로 발생

- 평균 응답 속도는 약 300ms로 정상 범위 내에 있었음

추측

503 에러

HTTP 503 에러는 일반적으로 다음과 같은 상황에서 발생한다.

- 서버가 유지보수 중이거나 다운됨

- 서버가 과부하 상태로 더 이상 요청을 처리할 수 없음

우리 서비스는 AWS Lambda 기반의 서버리스 아키텍처로 구성되어 있어, 트래픽 증가 시 자동으로 함수 인스턴스가 확장되며 요청을 처리해야 한다.
그런데도 503 에러가 발생했다는 것은, Lambda 함수의 동시 실행 수가 제한되어 있고, 해당 제한에 도달했을 가능성이 높다고 판단했다.

 

해결 과정

1. CloudWatch에서 Lambda 동시성 지표 확인

Lambda 함수의 동시성 지

함수의 ConcurrentExecutions 메트릭을 확인해보니, 동시 실행 수가 정확히 10에서 멈춰 있다.

2. Lambda 함수 설정에서 동시성 제한 확인

Lambda 함수가 최대 동시성이 10이다.

 

현재 Lambda 함수는 Reserved Concurrency를 사용하지 않고, Unreserved Concurrency를 사용 중이다.

그런데, 예약되지 않은 계정 동시성이 10밖에 되지 않는다.

3. Service Quotas 확인

AWS 콘솔 > Service Quotas > Lambda > Concurrent executions 항목을 확인

계정 전체에 허용된 동시성 한도가 기본값인 1000이 아닌 10으로 설정되어 있다.

따라서, Lambda 확장 한계에 도달하여 더 이상 확장이 불가능했고, 이로 인해 503 에러가 발생했다.

해결

Lambda 함수 동시성 제한 상향 요청

AWS 콘솔에서 Lambda 동시성 제한 상향 요청을 제출하여 최대 동시성을 1000으로 설정했다.

 

Lambda 확장 요청이 완료됐단 이메일

3시간쯤 지나서 요청이 처리됐단 이메일이 도착했다.

 

 

Lambda가 동시에 12개까지 실행
처음과 동일한 부하 테스트 실행 시에도 에러가 발생하지 않음

이후 다시 부하테스트를 시도했을 때, 최대 동시성이 12까지 도달했으며 에러가 발생하지 않았다.