연결 하나가 느려지자 나머지가 전부 멈췄다 · 이 방식이 무너지는 자리 · 퀴즈
퀴즈: 이 방식이 무너지는 자리
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
RLIMIT_NOFILE 이 뜻하는 값은?
- 한 호스트가 열 수 있는 소켓의 총합
- 한 프로세스가 만들 수 있는 스레드 수
- 열 수 있는 가장 큰 서술자 번호보다 1 큰 값
- 커널이 한 번에 통지하는 이벤트 수
연결 200개를 붙인 서버의 서술자 수가 200보다 큰 이유는?
- 커널이 연결마다 예비 서술자를 하나씩 더 만들어서
- 표준 입출력과 듣는 소켓, 다중화 객체가 함께 세어져서
- 연결 하나가 송신용과 수신용 서술자를 따로 써서
- 닫힌 연결의 서술자가 잠시 남아 있어서
서술자 상한을 크게 올려도 select 로는 넘을 수 없는 것은?
- 1024 보다 큰 번호의 서술자를 지켜보는 일
- 한 번에 여러 연결을 받아들이는 일
- 논블로킹 소켓을 등록하는 일
- 읽기와 쓰기를 함께 지켜보는 일
tcp(7) 이 적어 둔 소켓 버퍼 크기의 성질은?
- 설정한 값과 조회한 값이 항상 같다
- 버퍼 크기는 연결 수와 무관하게 고정된다
- TCP 가 요청한 크기의 두 배를 할당해 관리용으로 쓴다
- 소켓별 설정은 listen 이후에만 적용된다
서술자와 메모리는 남았는데 지연만 늘어나는 상황의 원인은?
- 이벤트 루프가 코어 하나를 다 썼기 때문
- 듣기 큐가 가득 찼기 때문
- 유휴 제한이 너무 길기 때문
- 준비 통지가 레벨 트리거이기 때문
연결당 커널 메모리 문제가 늦게 발견되는 이유는?
- 연결 수 그래프가 그 값을 대신 보여 주기 때문에
- 커널이 부족해지면 미리 경고를 보내기 때문에
- 소켓 버퍼는 연결이 끊길 때만 할당되기 때문에
- 언어 런타임의 메모리 지표에 잘 나타나지 않아서