백엔드에서 여러 로직이 비동기로 진행되는 동안
프론트에서는 로딩창을 띄운채로 대기하다가
응답을 받으면 완료 alert를 띄운다.
그런데 백엔드에서 로직이 진행되는 도중 갑자기 클라이언트에서 504에러를 띄운다.
그와중에 백엔드 로직은 진행되고 문제없이 마무리됨.
로컬에서는 문제없었는데 배포버전에서만 오류 발생.
현재 배포환경은 프론트/백엔드 각 컨테이너가 nginx 프록시 서버를 통해 연결된다.
nginx의 timeout 기본설정은 60초이고, 이 시간이 지나면 Timeout 오류를 반환한다고 한다.
nginx 설정파일에 아래 두개의 timeout 설정 추가해줬다.
proxy_connect_timeout 120s;
proxy_read_timeout 120s;
해결완료!
근데 응답을 받기까지 1분 41초 정도 걸려서 아슬아슬하다 응답먼저 내보내고 뒤에서 비동기로 처리해야 할지 ?
[ Nginx_Timeout 설정 ]
1. proxy_connect_timeout
Nginx가 프록시 서버와 연결을 설정하는데 사용하는 최대 시간.
proxy_connect_timeout 60s;
=> 클라이언트 요청에 대해 Nginx가 백엔드 서버에 연결을 시도하는 최대 시간으로,
연결이 되지 않으면 504 Gateway Timeout 오류.
2. proxy_send_timeout
Nginx가 클라이언트의 요청을 백엔드 서버로 전송하는 데 사용하는 최대 시간.
proxy_send_timeout 60s;
=> 클라이언트 요청 데이터를 Nginx가 백엔드 서버로 전달하는 데 걸리는 제한 시간으로,
대량의 데이터를 업로드하는 경우 필요.
3. proxy_read_timeout
Nginx가 백엔드 서버로부터 응답 데이터를 읽는 데 사용하는 최대 시간.
proxy_read_timeout 60s;
=> 백엔드 서버가 요청을 처리하고 응답을 생성하기까지의 제한 시간으로,
시간내에 응답을 받지 못하면 Nginx가 연결을 종료.
4. send_timeout
Nginx가 클라이언트에게 데이터를 보내는 동안 대기하는 최대 시간.
send_timeout 60s;
=> Nginx가 응답 데이터를 클라이언트로 전송하는 과정에서
클라이언트가 데이터를 받지 못하거나 읽기를 멈추면 연결을 종료.
(불안정하거나 느린 네트워크 환경)
https://ilikezzi.tistory.com/60
'업무 > 정리 & 오류' 카테고리의 다른 글
[Docker] Dockerfile, 컨테이너, CommunicationsExceptihttps 오류 (0) | 2025.01.11 |
---|---|
[오류] mysql 연결 오류 (iptables failed) (0) | 2024.12.18 |
[Spring Boot] 메인클래스 (0) | 2024.11.21 |
서버 호스팅, 도메인 연결, SSL인증서 적용 (0) | 2024.09.23 |
[리눅스 명령어] + 업데이트 중 (0) | 2024.08.11 |