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
'개발자 강화 > 백엔드' 카테고리의 다른 글
[매일메일] WAS와 웹서버의 차이점? (BE.250124) (0) | 2025.01.24 |
---|---|
[매일메일] Java의 Stack, Queue, Deque란? (BE.2501223) (0) | 2025.01.23 |
[매일메일] SSR vs CSR, SPA vs MPA란? (BE.250122) (0) | 2025.01.22 |
[매일메일] 리버스 프록시와 포워드 프록시의 차이점? (BE.250117) (0) | 2025.01.17 |
[매일메일] HTTP 메서드의 멱등성(BE.250113) (0) | 2025.01.13 |