데이터 마이그레이션을 해야해서 작업용 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