[완결] Series: 막힌 이유를, 몇 번이고 다시 찾았다
네이버 뉴스 검색이 403으로 막히는 진짜 원인을 찾은 기록. 동시성·딜레이·시간창 가설을 차례로 실측해서 반증하고, 배치+휴식 구조로 완전히 해결한 다음, 그 휴식을 30분에서 1분까지 얼마나 줄일 수 있는지 끝까지 밀어붙였다.
-
고쳤는데도 안 됐다, 진짜 이유는 따로 있었다
실측으로 순간 최대 14개까지 몰리는 걸 직접 세어 확인하고, IP당 동시 요청을 2개로 강제 제한했다. 그런데 다시 돌리자 실패율은 전혀 줄지 않았다 — 오히려 분당 실패 건수는 더 나빴다. 열두 번째로 다시 찾은 진짜 이유는 코드 안에 없었다.
-
순서를 뒤집자, 패턴도 정확히 뒤집혔다
9시간을 쉬고 처음으로 21개 타깃을 끝까지 완주했다. 그런데 그룹마다 클린율 격차가 뚜렷했고, 그 격차가 처리 순서와 겹쳐 보였다. 순서를 통째로 뒤집어 확인해보니, 실패 패턴도 정확히 그 순서를 따라 뒤집혔다.
-
가장 많이 죽던 자리를 그대로 두고 다시 돌렸는데, 이번엔 다 살았다
21개 타깃을 3~4개씩 6배치로 쪼개고 배치 사이에 30분씩 진짜로 쉬어봤다. 매번 거의 전멸하던 그룹을 일부러 그대로 마지막 배치에 남겨뒀는데, 이번엔 그 배치까지 포함해서 21개 타깃 전부 403이 단 한 건도 없었다.
-
30분에서 1분까지, 얼마나 줄일 수 있는지 끝까지 밀어봤다
근본 원인은 이미 잡았으니 이제 최적화 차례였다. 휴식을 절반씩 줄여나가면서, 동시에 이미 두 IP를 같이 쓰고 있던 구조를 그대로 병렬로 돌려봤다. 30분 걸리던 걸 13분까지 줄이는 동안, 내가 놓칠 뻔한 걸 두 번 다 사용자가 먼저 잡아냈다.