연결 하나가 느려지자 나머지가 전부 멈췄다 · 말 없는 연결을 언제 끊나 · 퀴즈
퀴즈: 말 없는 연결을 언제 끊나
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
조용한 연결과 죽은 연결을 구분하는 방법은?
- 소켓 상태를 조회해 확인한다
- 읽기 준비가 오는지 잠시 기다려 본다
- 연결마다 마지막 활동 시각을 적어 두고 비교한다
- 커널의 연결 표에서 사라졌는지 확인한다
이벤트가 하나도 없는 동안 유휴 정리가 돌게 하려면?
- 다중화 호출의 대기 시간에 상한을 둔다
- 만료 목록을 미리 정렬해 둔다
- 유휴 검사를 별도의 블로킹 호출로 옮긴다
- 연결마다 알람 신호를 걸어 둔다
경과 시간 계산에 단조 시계를 쓰는 이유는?
- 벽시계보다 해상도가 항상 높기 때문에
- 여러 서버의 시각을 맞춰 주기 때문에
- 소켓을 논블로킹으로 바꿔 주기 때문에
- 시각 동기화로 벽시계가 조정돼도 흔들리지 않아서
TCP keepalive 가 보장하는 것과 보장하지 않는 것은?
- 전송 계층의 생존은 확인하지만 업무 진행은 확인하지 못한다
- 상대 프로세스가 요청을 처리 중임을 확인해 준다
- 애플리케이션의 유휴 정책을 대신해 준다
- 연결이 끊기면 프로그램의 상태까지 정리해 준다
연결을 끊을 때의 올바른 순서는?
- 소켓만 닫고 목록은 다음 깨어남에서 정리한다
- 관심 목록에서 빼고 상태를 지운 뒤 소켓을 닫는다
- 상태만 지우고 소켓은 가비지 컬렉션에 맡긴다
- 소켓을 닫은 뒤 같은 서술자를 다시 등록한다
유휴 제한을 지나치게 짧게 잡으면 생기는 일은?
- 서버의 파일 서술자가 더 빨리 바닥난다
- 느린 손님이 빠른 손님을 막는 현상이 사라진다
- 커널이 유휴 제한을 자동으로 늘려 준다
- 연결을 재사용하던 클라이언트가 매번 새로 연결한다