크롤러 스로틀링 처리

크롤러 스로틀링이 어떻게 구현되는지에 대해 일반적인 질문이 있습니다.

Reduce Google Crawl Rate | Google Crawling Infrastructure  |  Crawling infrastructure  |  Google for Developers 에 따르면, 권장되는 HTTP 상태 코드는 429(요청 횟수 초과) 또는 503(사이트 사용 불가)입니다.

하지만 소스 코드를 읽어보니, 스로틀링은 오류를 throw하는 방식으로 구현되어 있는 것으로 보입니다: discourse/lib/rate_limiter.rb at 85fddf58bc1e751d0ac5b8192a630c59a34aed7d · discourse/discourse · GitHub

Ruby on Rails를 사용하던 시절은 이미 오래되었지만, 이것이 일반적인 505 오류를 발생시키는 것이라고 추정합니다.

구글 크롤러는 discourse의 스로틀링을 제대로 이해하지 못하는 것 같으며, Google Search Console에서 스로틀링이 구현된 후 인덱싱 및 그에 따른 노출 수가 급격히 감소한 것을 확인할 수 있습니다. 이는 스로틀링 자체 때문이 아니라 5xx 서버 오류 때문인 것으로 보입니다.

너무 많은 트래픽을 유발할 경우 스로틀링 인스턴스가 때때로 필요할 수 있다는 점은 이해하지만, discourse가 크롤러에게 505 내부 오류를 반환하는 대신 HTTP 429를 보고하도록 기대했습니다.

찾고 계신 것은 아마도 이것일 것입니다.

해당 에러에 대해 상태 코드를 설정하는 “글로벌” 컨트롤러 구조스입니다.

감사합니다! 안심되긴 하지만, 스로틀링이 구현된 시점과 일치하는 5xx 에러를 Google Search Console이 보고하는 이유를 완전히 설명해 주지는 않네요.

심지어 discourse의 sitemap.xml을 가져오지 못했다고 보고하고 있습니다.

특히 sitemap.xml에 대한 스로틀링이 문제인 것 같습니다.

이것이 커버리지 공백의 원인이었을 것으로 추측합니다. Google이 429 오류를 5xx 오류로 잘못 보고했을 수도 있다고 생각합니다.