Connection Timeout, Socket Timeout, Read Timeout의 차이점은 무엇인가요?

2024. 12. 25. 11:09·백엔드 면접

Connection Timeout은 클라이언트가 서버에 연결을 시도할 때, 일정 시간 내에 연결이 이루어지지 않으면 발생하는 타임아웃입니다. 예를 들어 TCP 3-way-handshake가 일정 시간 내에 완료되지 않으면 발생합니다. 즉, 서버의 장애나 응답 지연으로 인해 연결을 맺지 못하면 Connection Timeout이 발생합니다.

 

Socket Timeout은 Connection Timeout 이후에 발생할 수 있는 타임아웃입니다. 클라이언트와 서버와 연결된 후, 서버는 데이터를 클라이언트에게 전송합니다. 이때 여러 개의 패킷 단위로 쪼개서 전송되는데, 각 패킷이 전송될 때의 시간 차이 제한을 Socket Timeout이라고 합니다. 만약 서버가 일정 시간 내에 다음 패킷을 보내지 않으면 클라이언트는 Socket Timeout을 발생시키고 연결을 종료할 수 있습니다.

 

Read Timeout은 클라이언트와 서버가 연결된 후, 특정 I/O 작업이 일정 시간 내에 완료되지 않으면 발생하는 타임아웃입니다. 클라이언트와 서버가 연결된 상태에서 서버의 응답이 지연되거나 I/O 작업이 길어져 요청이 처리되지 않을 때 클라이언트는 연결을 끊습니다. Read Timeout은 이러한 상황을 방지하기 위해 설정하는 타임아웃으로, 일정 시간 내에 데이터가 읽히지 않으면 클라이언트가 연결을 종료합니다.


네트워크 통신에 타임아웃이 필요한 이유는 무엇인가요?

타임아웃 설정으로 자원을 절약할 수 있기 때문입니다. 예를 들어 외부 서비스로 요청을 보냈지만 해당 요청이 무한정 길어질 수 있습니다. 이때 서비스가 스레드, 데이터베이스 커넥션 등 자원을 점유하고 있다면, 쉽게 서비스의 자원이 고갈되어 장애가 발생할 수 있습니다. 타임아웃을 설정하면 이렇게 요청이 무한정 길어지는 상황을 예방할 수 있습니다.


타임아웃 테스트는 어떻게 해볼 수 있을까요?

가상 서버를 띄우고 임의로 지연을 추가하여 타임아웃을 테스트할 수 있습니다. 하지만 테스트 환경을 구축하기 위한 비용과 자동화된 테스트에 지연 시간이 추가되는 것이 단점입니다. 타임아웃 테스트를 하여 얻을 수 있는 것에 대한 트레이드오프를 신중히 고민해야 합니다.

'백엔드 면접' 카테고리의 다른 글

자료구조 스택에 대해서 설명해 주세요.  (1) 2024.12.27
서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요?  (2) 2024.12.26
private 메서드에 @Transactional을 선언하면 트랜잭션이 동작할까요?  (0) 2024.12.24
포워드 프록시와 리버스 프록시의 차이에 대해 설명해 주세요.  (0) 2024.12.23
CORS란 무엇인가요?  (1) 2024.12.21
'백엔드 면접' 카테고리의 다른 글
  • 자료구조 스택에 대해서 설명해 주세요.
  • 서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요?
  • private 메서드에 @Transactional을 선언하면 트랜잭션이 동작할까요?
  • 포워드 프록시와 리버스 프록시의 차이에 대해 설명해 주세요.
이런개발
이런개발
geun-00의 흔적 보관소
  • 이런개발
    내일이 기대되는 오늘
    이런개발
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 백엔드 면접
      • SQL N
        • SUM, MAX, MIN
        • SELECT
        • GROUP BY
        • JOIN
      • Spring
      • JPA
      • 트러블슈팅
      • Infra
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링
    데브코스
    raid
    자바
    오블완
    백엔드 면접
    토스 페이먼츠
    티스토리챌린지
    JPA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
이런개발
Connection Timeout, Socket Timeout, Read Timeout의 차이점은 무엇인가요?
상단으로

티스토리툴바