Cloudflare 1027: Worker 일일 한도
Cloudflare 1027은 Worker가 무료 플랜 하루 10만 요청 한도를 넘긴 것. 상태·원인·페일오픈·업그레이드 4단계 점검. 무료 즉시 진단으로 확인.
내 도메인에 이 문제가 있는지 지금 확인
무료, 가입 불필요. 이 가이드가 다루는 항목을 바로 검사하고 조치 방법을 알려드립니다.
Problem
Cloudflare로 호스팅한 사이트나 Worker가 “This website has been temporarily rate limited. You cannot access this site because the owner has reached their plan limits.”라는 문구와 함께 오류 코드 1027이 박힌 Cloudflare 페이지를 내보내기 시작합니다. 보통 하루 중 늦게 나타났다가 밤사이 풀립니다. 오리진 서버가 죽은 것도, 코드가 크래시한 것도 아닙니다 — 무료 플랜의 Worker가 하루치 요청 예산을 다 써서, Cloudflare가 날짜가 바뀔 때까지 그것을 꺼 둔 것입니다.
Symptoms
- 방문자에게 1027과 “temporarily rate limited”, 소유자가 “plan limits”에 도달했다는 문구가 담긴 Cloudflare 오류 페이지가 보입니다.
- 하루 중간쯤 나타났다가 00:00 UTC가 지나면 저절로 복구됩니다 — 매일 거의 같은 시계 시각에.
- Cloudflare 대시보드에 그날의 Workers 요청 수가 10만에 근접하거나 도달해 있습니다.
- 오리진 서버는 멀쩡합니다 — 직접 접속되고, 실패한 요청은 로그에 남지 않습니다. 엣지가 요청이 도달하기 전에 응답하기 때문입니다.
- 트래픽 급증, 새로 크롤링하는 봇, 또는 더 많은 라우트 앞에 Worker를 놓은 변경 이후에 시작됐습니다.
What Error 1027 Actually Means
Cloudflare Workers 무료 플랜은 UTC 하루당 10만 요청과, 별도로 분당 1,000 요청의 버스트 한도를 포함합니다. Error 1027은 그중 일일 한도가 소진됐을 때 나옵니다. Worker를 거치는 모든 요청이 그 10만에 카운트되고, 합계가 그 선을 넘으면 Cloudflare는 그날 남은 UTC 시간 동안 Worker 실행을 멈추고 대신 1027 페이지를 내보냅니다. 00:00 UTC에 카운터가 리셋되면 사이트는 아무 일 없었다는 듯 돌아옵니다.
바로 그 “아무 일 없었다는 듯”이 1027을 오진하기 쉽게 만듭니다. 매일 밤 스스로 낫기 때문에, 예정대로 걸어 들어가는 하드 리밋이 아니라 간헐적이고 유령 같은 장애처럼 보입니다. 리셋이 로컬 시간이 아니라 UTC 기준이라, 장애 구간이 당신의 업무 시간과 어긋나 흐르고 당신 로그의 무엇과도 맞아떨어지지 않습니다.
1027을 이웃들과 구분해 둘 가치가 있습니다. 해결책이 다르기 때문입니다. 1015는 분당 버스트 한도 — 잠깐의 스파이크, 1분이면 사라집니다. 1101은 Worker가 처리되지 않은 예외를 던졌다는 뜻입니다(코드 버그, wrangler tail에 스택 트레이스). 1102는 단일 호출이 CPU나 메모리 한도를 넘겼다는 뜻입니다. 1027은 그 어느 것도 아닙니다: 코드도 멀쩡하고 요청 하나하나도 멀쩡한데, 카운트에 상한이 있는 플랜에서 하루에 너무 많이 돌렸을 뿐입니다.
Top 3 Causes
- Worker가 존 전체 앞에 있어서 전부 센다. 넓은 라우트(
example.com/*)의 Worker는 매칭되는 모든 요청 — HTML뿐 아니라 이미지·스크립트·폰트·파비콘까지 — 마다 실행됩니다. 자산 30개짜리 페이지를 여는 실사용자 몇 명이면 방문자 수가 시사하는 것보다 훨씬 빨리 10만 요청에 도달합니다. 지문: 애널리틱스의 페이지뷰는 소박한데 Workers 요청 그래프는 자릿수가 더 큽니다. - 예산을 쓰는 게 사람이 아니라 봇·크롤러다. 공격적 스크레이퍼, 오작동하는 업타임 모니터, 모든 URL을 때리는 AI 크롤러가 실트래픽이 평평한 와중에 하루 여섯 자리 요청을 태울 수 있습니다. 지문: 요청 스파이크가 어떤 캠페인이나 출시와도 맞지 않고, 로그의 소스 IP·유저에이전트가 당신 사용자가 아닙니다.
- Worker가 스스로 서브리퀘스트를 내거나, Pages Functions 볼륨. API를 호출하거나 들어온 요청 하나를 여럿으로 부채질하는 Worker는 카운트를 배가합니다. Cloudflare Pages에서는 Functions 호출마다 같은 일일 풀에서 빠집니다. 지문: 요청량이 실제 트래픽의 깔끔한 배수이거나, Pages를 쓰면서 Functions가 카운트되는 줄 몰랐습니다.
Diagnose with DechoNet
- HTTP Header Check는 URL을 가져와 Cloudflare가 정확히 무엇을 돌려주는지 — 1027 오류 본문과
cf-ray헤더 — 를 보여주므로, 차단이 오리진이 아니라 Cloudflare 엣지에서 계정 플랜 한도로 일어나는지 확인됩니다. 00:00 UTC 이후 같은 점검이 다시 성공하면 일일 리셋 패턴이 확정됩니다. - IP Lookup은 (Cloudflare 로그에서 뽑은) Worker를 두들기는 소스 주소를 네트워크·평판과 대조하도록 도와, 차단할지 업그레이드할지 정하기 전에 폭주하는 봇과 정상적 성장을 구분하게 해 줍니다.
Resolution Checklist
- 오류 코드가 1027(일일 한도)인지 확인하세요 — 1015(분당 버스트), 1101(Worker 예외), 1102(호출당 자원 한도)가 아니라. 각각 해결책이 다릅니다.
- Cloudflare 대시보드에서 현재 UTC 하루의 Workers 요청 수를 확인하고 10만 이상인지 봅니다.
- 즉시 완화책: 대시보드에서 해당 라우트를 fail open으로 설정해 요청이 Worker를 우회해 오리진으로 가게 하면 1027 벽을 피합니다.
- 예산을 쓰는 주범을 찾으세요 — Worker 요청량을 실제 페이지뷰와 비교하고, 정적 자산을 세는 넓은
/*라우트·서브리퀘스트 부채질·Pages Functions를 살핍니다. - 어뷰징이면 문제 IP·유저에이전트를 차단하거나 챌린지하고, 넓은 라우트면 Worker 매칭을 좁히거나 응답을 캐시해 도달 요청을 줄입니다.
- 정상 트래픽이면 한도에서 벗어나세요: Workers Paid 플랜($5/월)은 일일 한도를 없애고 포함량 초과분은 요청당 과금합니다.
When to Escalate
- Worker 요청 수가 실제 트래픽보다 한참 위인데 소스를 못 찾겠다면, 티켓을 열기 전에 해당 구간의 Workers 로그와 애널리틱스를 뽑아 두세요 — Cloudflare 지원은 요청 내역을 함께 읽어 줄 수 있지만 타임스탬프와 Ray ID가 손에 있어야 합니다.
- Paid로 업그레이드했는데도 1027이 계속 뜬다면, 플랜 변경이 엉뚱한 계정에 적용됐거나 Worker가 생각과 다른 계정에 있을 수 있습니다 — 어느 계정이 그 라우트를 소유하는지 확인하세요. 업그레이드 후의 1027은 실제로 넘긴 한도가 아니라 거의 항상 과금 범위 불일치입니다.
관련 도구
관련 가이드
가이드 공유