본문 바로가기

개발자 강화/백엔드

[매일메일] Connection/Socket/Read Timeout이란? (BE.250121)

Connection Timeout

클라이언트가 서버에 연결을 시도할 때, 서버 장애나 응답 지연으로 일정 시간 내 연결이 이루어지지 않으면 발생함

3-way handshake가 일정 시간 내에 완료되지 않으면 발생함 (클라이언트-서버 연결을 위해 확인하는 절차)

 

Socket Timeout

패킷이 전송되는 시간 간격 제한 내에 다음 패킷을 보내지 않으면 발생함.

패킷: 클라이언트와 서버가 연결된 후, 서버에서 데이터를 전송할 때 데이터를 여러 패킷 단위로 쪼개서 전송함.

시간 내에 다음 패킷이 오지 않으면 클라이언트는 연결 종료.

 

Read Timeout

클라이언트와 서버가 연결된 후, 특정 I/O 작업이 일정 시간 내에 완료되지 않으면 발생함.

클라이언트는 서버의 응답이 지연되거나 I/O 작업이 길어져 요청이 처리되지 않으면 연결 종료.

일정 시간 내에 데이터가 읽혀지지 않으면 클라이언트가 연결을 종료함.

 

Timeout이 필요한 이유?

 

리소스 절약을 위함.

외부 서비스로 요청을 보냈을 때 요청이 무한정 길어지면 장애가 발생할 수 있음. 이런 상황에서 연결을 끊어서 예방함.

 

Timeout을 테스트하는 방법?

가상 서버를 띄우고 임의로 지연을 추가해 테스트함.

테스트 환경 구축 

 


 

출처

[1] 매일메일. 250121. Connection Timeout, Socket Timeout, Read Timeout의 차이점은 무엇인가요? 102번 https://maeil-mail.kr

[2] 토스 페이먼츠 - 타임아웃. https://docs.tosspayments.com/resources/glossary/timeout