하루 수천만 줄. 전부 메모리에 올리지 않고 한 줄씩 흘려보내며 답을 구하는 것이 요령입니다.
어제 오후 3시경 사이트가 5분간 느렸다는 제보가 있습니다.
원인을 찾아야 해요. 단서는 접속 로그 2,400만 줄입니다.
211.45.x.x - - [19/Aug/2026:15:02:11] "GET /product/1042 HTTP/1.1" 200 8421 0.031
183.99.x.x - - [19/Aug/2026:15:02:11] "POST /api/cart HTTP/1.1" 200 142 0.008
45.77.x.x - - [19/Aug/2026:15:02:12] "GET /search?q=%EC%9D%B4 HTTP/1.1" 200 20481 2.840
이 파일을 엑셀로 열려고 하면 안 됩니다. 컴퓨터가 멈춰요.
한 줄씩 읽으면서 필요한 것만 기억하는 방식이 필요합니다.
실무 로그 분석의 뼈대 전체입니다. 꼭 실행해 보세요.
🎮 로그 분석기
가상 로그를 생성하고 Top-K IP, 상태 코드 분포,
시간대별 요청 수를 실시간으로 집계합니다.
봇 비율을 올리면 이상 신호가 어떻게 보이는지 확인해 보세요.
슬라이딩 윈도우 — "최근 5분" 을 계속 갱신하기
"최근 5분간 요청 수"를 매초 알고 싶습니다.
매초 5분치를 다시 세면 낭비예요. 들어온 건 더하고, 나간 건 빼면 됩니다.
슬라이딩 윈도우는 17강 트래픽 제어와 18강 속도 규칙의 핵심 부품이기도 합니다.
평균만 보다가 장애를 놓치는 것 — 가장 흔한 실수입니다.
🤔 확인 문제
2,400만 줄짜리 로그에서 IP별 접속 횟수를 구하는 가장 적절한 방법은?
해설 스트리밍 처리입니다. 메모리에는 IP 종류 수만큼만 남아요. 전부 담으면 수 GB가 필요합니다.
🤔 확인 문제
평균 응답시간이 50ms인데 고객 불만이 많습니다. 다음으로 확인할 지표는?
해설 평균은 소수의 아주 느린 요청을 숨깁니다. p99가 5초라면 100명 중 1명은 5초를 기다린 거예요. 체감 성능은 꼬리(tail)가 결정합니다.
🤔 확인 문제
"최근 5분간 요청 수"를 매초 갱신할 때 효율적인 자료구조는?
해설 슬라이딩 윈도우입니다. 뒤로 넣고 앞에서 버리는 deque — 11강의 큐가 그대로 쓰여요.