LabHub
배우기 러닝패스 코스

요청 하나가 아니라 전부가 느려졌다 · 한 줄에 선 일감 · 퀴즈

퀴즈: 한 줄에 선 일감

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 결제 API 가 느리다는 신고를 받았습니다. 확인해 보니 같은 시각에 조회 API 와 헬스 체크의 p99 도 함께 올라가 있습니다. 가장 먼저 의심할 것은?

    1. 결제 API 의 데이터베이스 쿼리와 인덱스
    2. 결제 서버와 게이트웨이 사이의 네트워크 구간
    3. 결제사 외부 API 의 응답 시간
    4. 같은 프로세스에서 이벤트 루프를 오래 붙잡은 코드
  2. 20ms 간격으로 걸어 둔 타이머의 콜백에서 이벤트 루프 지연을 재려고 합니다. 표본에 담아야 할 값은?

    1. 지난번 호출과 이번 호출 사이의 경과 시간
    2. 콜백 안에서 수행한 작업이 걸린 시간
    3. 경과 시간에서 정해 둔 간격을 뺀 나머지
    4. 프로세스가 시작한 뒤로 흐른 전체 시간
  3. Node 22 에서 `perf_hooks.monitorEventLoopDelay()` 를 옵션 없이 만들어 아무 부하 없는 프로세스에서 재면 p50 이 10ms 근처로 나옵니다. 이유는?

    1. 표본 간격의 기본값이 10ms 라 그 값이 바닥이 된다
    2. 프로세스가 항상 그만큼 밀려 있다는 뜻이다
    3. 가비지 컬렉션이 그만큼 주기적으로 돌기 때문이다
    4. 히스토그램의 단위가 나노초라 환산에서 생긴 오차다
  4. 동기 작업 하나가 1.2초 중 300ms 동안 루프를 붙잡았을 때, 지연 분포에서 뚜렷하게 움직이는 값은?

    1. 평균과 중앙값이 함께 올라간다
    2. 최댓값과 p99 만 올라가고 평균은 거의 그대로다
    3. 모든 백분위가 비슷한 비율로 올라간다
    4. 표본 수가 늘어나고 값들은 그대로다
  5. 요청 10건이 한꺼번에 도착했고 그중 세 번째 요청만 300ms 동안 CPU 를 붙잡았습니다. 응답 로그에 300ms 넘게 걸린 것으로 찍히는 요청은 대략 몇 건일까요?

    1. 1건 — 붙잡은 그 요청만
    2. 2건 — 붙잡은 요청과 바로 다음 요청
    3. 8건 — 붙잡은 요청과 그 뒤에 처리될 요청들
    4. 10건 — 앞선 요청까지 포함한 전부
  6. Node 가 요청마다 스레드를 띄우지 않고 한 줄에서 도는 방식을 고른 대가로 개발자가 지켜야 하는 규칙은?

    1. 모든 함수를 async 로 선언해야 한다
    2. 콜백 하나가 한 번에 오래 걸리는 일을 하면 안 된다
    3. 전역 변수를 쓰지 말아야 한다
    4. 요청마다 새 객체를 만들지 말아야 한다