⏰ Timeout 종류

로로·2023년 9월 24일
0
회사에서 api 건마다 webclient timeout 설정을 해야하는 일이 있었는데.. webclient도 잘 모르고, timeout 종류에 대해서도 잘 모르다보니 3일내내 헤맸다.. 후 결국 퇴근하고 집에와서까지 간단하게 코드 짜서 나름(?) 해결 했을지도..? (내일 회사가서 해봐야됨)
  • Http Timeout
  • Response Timeout
  • Connectin Timeout
  • Read and Write Timeout
  • SSL/TLS Timeout
  • Proxy Timeout
  • Request Timeout
    - Response Timeout
    - Reactive Timeout

등등등



TCP 연결지향 통신 방식

1️⃣ Client -> Server의 IP:PORT로 Connection 요청 (Syn)
2️⃣ Client <- Server Connection 요청 수락 (Syn + Ack)
** 👉🏻 Connection 수립 완료 (위 과정에서 걸리는 시간을 Connection Time이라고 함) **
3️⃣ Client -> Server 요청
4️⃣ Client <- Server 응답



✔️ Dns Timeout


✔️ Connection Timeout

Client와 Server간 Connection을 맺는 과정 에서 발생하는 Timeout을 말한다

원인

  • Server에서 Connection을 맺을 자원이 없는 경우
  • Server의 방화벽에서 Client의 IP를 허용하지 않은 경우
  • Connection Pool의 Connection이 모두 사용중인 경우

대응

  • Client는 일시적인 오류 상황으로 구분하여 처리
    또는 미리 정의된 dafault 데이터나 cache 데이터로 fallback 처리

👉🏻 즉, 맛집에 들어갈려고 30분을 대기를 했는데 들어가지 못함 !!!



✔️ Socket Timeout

Client와 Sever가 connection을 맺은 이후 에 실제 데이터를 주고 받는 과정은 실제로는 N번의 패킷 전송과정을 거치게 된다
이 과정에서 각 패킷이 사이의 간격 시간이 일정 시간을 경과하면 발생하는 Timeout

전체 연결이 타임아웃이 발생한 것이 아니고
👉🏻 개별 패킷이 타임아웃이 발생



✔️ Read & Write Timeout

Client와 Sever가 connection 성공 했지만,
실제 데이터를 전송하는 I/O 과정이 길어지는 경우 발생하는 Timeout

원인 & 방안

  • Server에서 요청 데이터를 처리하는데 오래 걸리는 경우
  • 데이터의 양이 큰 경우
    👉🏻 분할해서 API 설계
    👉🏻 Retry 전략
    👉🏻 긴 Read Timeout으로 설정
    👉🏻 대량 데이터 처리를 위해 Server 메모리 늘려줘야 함
  • 네트워크 속도가 느린경우
    👉🏻 네트워크 대역폭 증가를 위한 인프라 작업 필요

맛집에 들어감(connection)
주문을 하고 10분을 기다렸으나 음식이 나오지 않음
그래서 가게를 나옴
👉🏻 요청에 대한 응답이 없어서 발생



📚 참고

https://romainefabula.tistory.com/87
https://icthuman.tistory.com/entry/Spring-WebClient-%EC%82%AC%EC%9A%A9-3-Configuration-Timeout
https://www.baeldung.com/spring-webflux-timeout

profile
청로하~🏝️

0개의 댓글

관련 채용 정보