내가 한 노력들

Apache와 PHP설정을 통해, gateway timeout 문제 해결하기 본문

IT 공부/Network

Apache와 PHP설정을 통해, gateway timeout 문제 해결하기

JONGI-N CHOI 2022. 12. 10. 13:00

javascript 에서 fetch를 이용해, PHP의 스크립트문을 실행시켜 결과를 받는 작업을 하고 있었는데, 경우에 따라서 504 gateway timeout에러가 발생하는 문제가 있었습니다. 

 

시간을 재보니, 60초가 지나게 되면 504에러가 발생했고 여러가지를 검색해보니까 Apache의 설정과 PHP의 설정을 해줄 필요가 있었습니다. 

 

우선 PHP는 php.ini의 max_execution_time을 설정해주면 됩니다. 

script실행완료까지 최대 시간을 지정하는 설정인데, 오래걸리는 작업을 실행하게 되어 설정값보다 시간이 초과되게되면 에러가 발생합니다.


php.ini

max_execution_time = 180

30이 디폴트값으로 되어있었지만 180(초)로 변경했습니다. 

 

httpd.conf

TimeOut = 180

또한, Apache의 TimeOut이라는 설정을 해줄 필요가있습니다. 

TimeOut은 클라이언트 요청에 의해 서버와 연결이 될 때, 서로간에 아무런 메시지가 발생하지 않을 때  연결을 끊는 시간입니다. 

 

따라서 서버로부터 script문이 실행되고 결과를 받기까지 클라이언트는 계속 기다리게되는데 시간이 길어지게 되면 연결이 끊켜 gateway timeout이 발생하는 원인이됩니다. 

 


주의할점

두 개의 값을 상황에 잘 맞게 조정할 필요가 있습니다. 

TimeOut을 아무리 길게 잡아도, max_execution_time의 값이 작아서 script 실행 도중에 끊키게 된다면 정상적인 동작을 하지 않습니다. 

 

또한, max_execution_time을 아무리 여유있게 잡아도, TimeOut이 짧게되면 script 실행 도중에 연결이 끊키게 때문에 getway timeout이 발생할 것 입니다.