티스토리 뷰
요즘 제공하는 서비스에서 timeout이 발생하는 케이스가 자주 발생한다는 이야기를 듣고, timeout에 대하여 알아보았다. 더 세세한 종류가 있는 것 같지만 간단하게 기본이 되는 몇 가지만 정리해둔다.
time out 발생 이유
client와 server가 서로 data를 주고 받기 위한 준비가 완료 되었지만 둘 중 한 곳에서 신호를 보내지 않을 경우 무한으로 기다리는 상황을 방지하고자 할 때, timeout이 발생한다.
connection timeout
말 그대로 연결 시간 초과의 의미를 가지고 있다. client에서 server로 connection을 요청하지만 서버에서 response가 오지 않을 때, 발생한다. 클라이언트에서는 요청하였으나 서버에서 장애가 난 경우로 default 데이터 혹은 캐시 된 데이터 등으로 임시 처리 할 로직을 추가로 구현하여 에러를 방어한다.
socket timeout
client와 server가 connection 된 이후에 발생되는 timeout이다. 서버는 데이터 전송 시 여러번 나누어 패킷을 전송하게 되는데, 각 패킷 전송의 간격 시간이 일정 시간 경과 시, 발생하게 된다.
클라이언트와 서버가 connection을 맺은 이후에 실제 데이터를 주고 받는 과정은 실제로는 N번의 패킷 전송과정을 거치게 되는데 이 과정 사이의 간격 시간이 일정 시간을 초과하면 발생하는 Timeout이다.
read timeout
client와 sever가 connection은 되었지만 데이터 전송 과정이 길어졌을 때, 일정 시간을 초과하면 client 측에서 connection을 끊어버려 발생하는 timeout이다. 일부 socket timeout과 비슷한 면모가 있다. java에서는 이 때, read timeout 경고 대신 socket timeout exception 문구를 띄워준다. 데이터의 양을 나누어서 받을 수 있도록 api sepc을 변경하는 것이 하나의 해결 방법이다.
write timeout
client에서 설정 할 수 있는 timeout으로 client와 server 간 connection은 되었지만 서버로 데이터를 보내는 시간이 길어질 때 write timeout이 발생한다. 클라이언트에서 서버로 전송하는 데이터 크기와 네트워크 속도가 영향을 미칠 수 있다.
request timeout
client와 server가 connection이 되었지만 클라이언트에서 request를 보내지 않을 때, 서버에서 connection을 끊게 된다. 이 때, 발생하는 것이 request timeout이다. connection timeout과 반대 되는 상황에 발생한다.
발생하는 상황에 따라 timeout이 달라지듯 각 상황에 맞는 적절한 대처를 통하여 쾌적한 서비스를 제공해야 할 것 같다.
'TIL:Today I Learn > etc' 카테고리의 다른 글
프론트엔드 추천 자료 URL 공유 (0) | 2022.08.01 |
---|---|
사파리 bfcache의 setTimeout 처리 (0) | 2022.07.13 |
라이브러리와 프레임워크의 차이점 (0) | 2022.07.06 |
프리마커 assign과 local의 차이 (0) | 2022.07.05 |
스켈레톤 UI란? (skeleton UI) 왜 사용해야하는가? 실제로 많이 사용될까? (0) | 2022.06.30 |
- Total
- Today
- Yesterday
- TIL
- 깃명령어
- reacthook
- frontend
- 리액트
- storybookUI
- 깃
- Git
- sentry
- 리액트상태관리
- 김민태
- 자바스크립트
- npm
- 리액트훅
- js
- 센트리모니터링
- CSS
- react
- 사파리
- BFCache
- js테스트
- 프론트엔드
- 리코일
- vue
- javascript
- gitRebase
- 모바일사파리
- 크롬
- 프론트앤드
- 센트리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |