새소식

반응형
Development

[Timeout] Timeout 종류 정리(connection, socket, read..)

  • -
반응형

서비스를 개발하며 외부 API를 호출하는 경우가 많이 존재한다.

외부 API를 호출할 때 발생하는 timeout 내역들을 정리해 놓고, 다음에 이슈가 발생했을 때 쉽게 기억을 떠올리기 위해서 정리해 두자.

Connection Timeout 

클라이언트가 서버와 통신을 요청하기 전에 서로 Connection을 맺는 과정을 TCP 통신에서 3 way handshake이라 한다.

이 과정에서 일정 시간이 지나 connection을 맺지 못하는 경우에 발생할 수 있는 Timeout이다.

Caused by: java.net.SocketTimeoutException: Connect timed out

 

Socket Timeout ~= Read Timeout

클라이언트와 서버가 Connection을 맺은 이후에 발생할 수 있다. 

데이터를 전송하는 Network IO 과정이 길어지면 클라이언트는 더 이상 통신이 불가능하다고 판단하고 Connection을 끊게 된다. 이때 발생하는 Timeout이다

Caused by: java.net.SocketTimeoutException: Read timed out

 

출처:https://alden-kang.tistory.com/20

 

Connection Reset By Peer

위의 connection을 맺는 과정에서 connection이 모두 맺어지고 

client 쪽에서 요청을 보냈는데 server 쪽에서 reset 패킷이 전달된 경우 발생할 수 있다고 한다.

이러한 경우 보통은 server 쪽에서는 keep-alive, idle-timeout이 모두 완료되어 connection을 닫았는데

client 쪽에서는 server보다 해당 값들이 더 길어서 발생할 수 있다. 

위의 값들을 server보다 client의 값을 더 작게 해 보는 시도도 좋을 것 같다. 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.