본문 바로가기

카테고리 없음

[AWS] 오래걸리는 작업

데이터 마이그레이션을 해야해서 작업용 API를 추가했다.

기본 타임아웃 시간인 60초를 초과하다보니 아래와 같은 에러가 응답된다.

<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>

응답은 되지만 로그가 서버에 남기에 실제로 작업은 계속 수행되는 것으로 알 수 있었다.

 

504 Gateway Timeout error using Nginx as Proxy 같은 키워드로 검색해보면 대부분

proxy_read_timeout 값을 변경하라고 가이드 한다.

 

하지만 변경을 했지만 여전히 60초 타임아웃이 발생했다.

심지어 http client로 사용했던 curl의 문제인가 싶어서 --max-time 500 옵션을 붙여주었지만 마찬가이였다.

과거를 찾아보다.

전에 타임아웃을 설정할 때 히스토리를 찾아보니 원인을 알 것 같다.

AWS에서 LoadBalancer가 있는데 nginx가 아닌 LB에서 타임아웃을 내는 것이다.

 

.ebextensions/04_load-balancer.config

option_settings:
  aws:elbv2:loadbalancer:
    IdleTimeout: 600
  aws:elb:policies:
    ConnectionSettingIdleTimeout: 600