Connection Timeout
- tcp는 3 way handshake 로 서버와 연결을 맺는다
- 위 작업이 수행되는데 걸린 총 시간을 connection time 이라고 한다
- 커넥션 타임을 무한으로 설정할 수는 없으니까 일정 시간을 지정하게 되는데 그 시간이 초과하면 타임아웃이 발생한다
- 즉, 일정 시간동안 연결을 하려고 하는데 그 시간동안 연결을 하지 못한 것
- 맛집에 들어갈려고 30분을 대기를 했는데 들어가지 못 함
Socket Timeout
- 서버와 클라이언트는 연결을 맺은 후 데이터를 여러 개의 패킷으로 주고 받는다
- 각 패킷이 전송될 때 시간 갭이 발생할 수 있는데 이 시간이 초과된 것
- 전체 연결이 타임아웃이 발생한 것이 아니고 개별 패킷이 타임아웃이 발생
Read Timeout
- 맛집에 들어감(connection)
- 주문을 하고 10분을 기다렸으나 음식이 나오지 않았음.
- 그래서 가게를 나옴
- 요청에 대한 응답이 없어서 발생
- 주고 받는 데이터의 양이나 네트워크 속도에 따라서 대응을 다르게한다. 만약 데이터의 양이 크다면 이를 분할해서 받을 수 있도록 API 자체 Spec을 변경하거나 Retry 전략을 사용할 수 있고, 속도가 느려서 발생하는 상황이라면 전반적으로 네트워크 대역폭 증가를 위한 인프라 작업을 고려할 수 있다.
참고