연결 하나가 느려지자 나머지가 전부 멈췄다 · 줄이 한 사람 때문에 멈춘다 · 퀴즈
퀴즈: 줄이 한 사람 때문에 멈춘다
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
순차 서버에서 느린 손님이 먼저 붙으면 뒤에 선 손님은?
- 앞사람이 끝날 때까지 응답을 받지 못한다
- 연결이 거부되어 즉시 오류를 받는다
- 다른 작업 흐름으로 옮겨져 먼저 처리된다
- 듣기 큐 덕분에 평소와 같은 시간에 답을 받는다
블로킹 모드에서 프로세스를 세울 수 있는 호출의 조합은?
- bind 와 listen 과 close
- accept 와 recv 와 send
- socket 과 setsockopt 와 bind
- getsockname 과 fileno 와 close
listen 의 backlog 를 크게 적으면 어떻게 되나요?
- 커널 설정과 무관하게 그 값이 그대로 쓰인다
- 값이 클수록 응답 지연이 함께 줄어든다
- somaxconn 보다 크면 조용히 그 값으로 깎인다
- 그만큼의 처리 흐름이 함께 만들어진다
순차 서버가 막혔을 때 흔히 보이는 지표의 모습은?
- CPU 사용률이 먼저 100퍼센트로 올라간다
- 메모리 사용량이 계단처럼 급히 늘어난다
- 디스크 입출력 대기가 가장 먼저 늘어난다
- CPU 는 한가한데 응답 시간의 꼬리만 길어진다
느린 손님이 있는데도 헬스체크가 통과하는 이유는?
- 헬스체크 요청은 커널이 직접 응답하기 때문에
- 헬스체크는 곧바로 요청을 보내 자기 차례에서 빨리 끝나서
- 헬스체크 경로에는 블로킹 호출이 없도록 커널이 보장해서
- 헬스체크는 듣기 큐를 건너뛰고 먼저 처리되기 때문에
구조를 바꾸기 전에 먼저 재 두어야 하는 이유는?
- 측정을 남겨야 개선 여부를 말할 수 있어서
- 측정하지 않으면 커널이 다중화를 허용하지 않아서
- 측정값이 backlog 의 기본값을 결정하기 때문에
- 측정 도구가 소켓을 논블로킹으로 바꿔 주기 때문에