AWS EC2 운영 중 가끔씩 볼 수 있는 에러가 있습니다.대표적으로 다음의 세가지 502, 503, 504 입니다.
이 중에서 이번에 알아볼 문제는 HTTP 504 에러입니다.
타임 아웃이 되어 Request를 처리하지 못하는 상황이 됩니다. 해결 방법부터 이야기 하자면 다음과 같이 웹서버의 Time-out 시간을 60초 이상으로 늘리는 것입니다.
Web Server & Application Time-out >= 60 sec
그 이유는 다음과 같은 ELB의 특성 때문입니다.ELB는 클라이언트와 EC2 서버 양쪽으로 커넥션을 유지하고 있습니다. ELB는 클라이언트와 EC2 서버간의 커넥션을 관리하는 역할을 맡고 있습니다. 그래서 유효한 커넥션만을 남겨놓습니다. 이를 위해서 Time-out 시간을 가지고 이 시간동안 데이터가 송수신되지 않으면 연결을 끊습니다. 기본적으로 Elastic Load Balancing는 두 연결 모두에 대해 Time-out(유휴 시간) 시간을 60초로 되어 있습니다.그렇기 때문에 HTTP 또는 HTTPS를 사용할 경우 "KeppAlive" 옵션을 사용하여 커넥션을 재활용해야 합니다. 이 때 ELB 커넥션도 재사용되기 때문에 CPU 사용률을 줄일 수 있습니다.
Browser
|
Time-out
|
Opera 11.11
|
120 sec
|
IE 9
|
60 sec
|
Chrome 13
|
300 sec
|
FireFox 4
|
115 sec
|
서버 로직 중에서 60초 이상 실행될 수 있는 부분이 있는 경우 504 에러를 자주 볼 수 있을 것입니다. 문제 해결을 위해서는 Web Server는 물론 Tomcat 설정 또한 60초 이상으로 변경해주어야 합니다.
댓글
댓글 쓰기