이전에 Broken pipe가 발생하는 원인을 찾아봤었는데 프론트에서 너무 빠르게 연결을 닫아
백엔드에서 응답을 반환할 때 예외가 발생하던 거였다
자세하게 들어가서 어떻게 실패했는지 찾아보면
백엔드에서 요청을 처리하던중 프론트에서 1분이 지나면 504 Gateway time-out으로 먼저 연결을 종료해버린다
현재 전산에서는 리버스 프록시 프로그램 Nginx를 사용하고 있는데
리버스 프록시와 프록시 프로그램 사이에 통신시간이 초과되며 리버스 프록시 프로그램에서 먼저 연결을 끊어버리게 되는 문제였다
그래서 timeout설정을 설정해줘야 하는데 timeout의 종류는 3종류가 있으며 기본값은 60s이다
connect_timeout : 프록시 연결시 만료시간
send_timeout : 요청 전송시 만료시간
read_timeout : 응답 수신시 만료시간
위의 경우는 요청은 전송됐으나 응답 수신대기중 만료되는 상황으로 nginx.conf파일에 read_timeout을 설정해주면 된다
추가하기전 Nginx가 서버와 통신하는 방법은 fastcgi, proxy 두 종류가 있는데 사용하는 방법으로 설정해준다.
server {
...
location / {
...
# fastcgi인 경우
fastcgi_read_timeout 300; # 기본값은 60
# proxy인 경우
proxy_read_timeout 300; # 기본값은 60
수정후 Nginx를 재시작하고 요청을 보내면..
504가 뜨지않고 성공!
'dev' 카테고리의 다른 글
[JAVA] Broken pipe, SocketTimeoutException 발생 원인 분석 - 1 (2) | 2025.06.24 |
---|---|
[sourceTree] 업데이트 이후 브랜치가 접혀서 표시될 때 (0) | 2025.03.27 |
[dbeaver] 24.3.2 버전 업데이트 이후 자동완성 지연문제 (0) | 2025.01.06 |
[sheetJS] 엑셀 날짜형식 데이터 숫자출력 문제 (0) | 2024.07.05 |
[react] <> 에 key값 넣기 (0) | 2024.05.20 |