Jak badać zachowanie Googlebota w warunkach przeciążenia

  • 11 minut czytania
  • SEO techniczne
dowiedz się

Badanie, jak zachowuje się Googlebot pod presją ograniczonych zasobów, to praktyka łącząca inżynierię wydajności i SEO techniczne. Świadoma symulacja przeciążenia, precyzyjny zapis i analiza logów oraz poprawna sygnalizacja błędów pozwalają zrozumieć mechanizmy ograniczania tempa crawl i minimalizować ryzyko utraty pokrycia indeksu. Poniżej znajdziesz metody krok po kroku: od przygotowania środowiska testowego, przez metryki, aż po interpretację wpływu na indeksowanie.

Jak odtworzyć przeciążenie w kontrolowanych warunkach

Weryfikacja tożsamości robota i zakresu testów

Zanim zaczniesz, upewnij się, że ruch faktycznie pochodzi od Google. Zweryfikuj adresy IP metodą odwrotnego DNS (rDNS) z weryfikacją zwrotną: najpierw uzyskaj nazwę hosta z IP, a potem sprawdź, czy wskazuje ono ponownie na to samo IP. Pozwoli to odróżnić prawdziwego Googlebota od imitacji. Jeśli korzystasz z CDN/WAF, włącz reguły przepuszczające zweryfikowane boty (np. tryb “Verified Bots”), aby nie zafałszować wyników testów.

Określ zakres: czy badamy wariant smartfonowy, desktopowy, czy specjalistyczne roboty (Images, Video, AdsBot, Google-InspectionTool). Wybór wpływa na intensywność i rozkład żądań. Zadbaj też o stabilne okno obserwacji poza sezonowymi szczytami ruchu użytkowników, by nie mylić zmian zachowania botów z naturalną zmiennością obciążenia.

Ustalenie stanu bazowego i metryk

Przed symulowaniem problemów zbierz stan bazowy: średnie żądania na minutę (RPM) od Googlebota, p95 czasu do pierwszego bajtu (TTFB) oraz czasu pełnej odpowiedzi (TTLB), udział statusów 2xx/3xx/4xx/5xx, liczba równoległych połączeń, rozkład po ścieżkach i typach zasobów (HTML, JS, CSS, obrazy). Zanotuj też częstotliwość i głębokość crawl na podstawie Search Console (Crawl Stats) oraz wielkość efektywnego budżet crawlingu.

Stan bazowy powinien obejmować co najmniej kilkadziesiąt godzin, najlepiej tydzień. Dzięki temu odfiltrujesz anomalie dnia i nocy oraz cykle publikacji treści. Zapisz konfigurację serwera (wersje, limity workerów, keep-alive, HTTP/2/3), aby móc odtworzyć testy później.

Techniki wywołania przeciążenia

Przeciążenie możesz symulować kilkoma wektorami, najlepiej rosnąco i pojedynczo, aby móc izolować skutki:

  • CPU: ogranicz limity CPU (cgroups), uruchom procesy obliczeniowo kosztowne, obniż priorytety workerów serwera.
  • I/O i baza: wprowadź opóźnienia na zapytaniach (np. slow query log i celowe wolne zapytania), dław cache, wyczyść ciepły cache.
  • Sieć: użyj narzędzi typu tc/netem do zwiększenia RTT, loss lub ograniczenia pasma.
  • Zasoby aplikacji: sztucznie wydłużaj generowanie HTML dla losowego procenta żądań.

W krytycznych punktach zwracaj świadomie 503 Service Unavailable z nagłówkiem Retry-After, 429 Too Many Requests lub 5xx, aby sprawdzić reakcję botów. Wariant 503 z Retry-After jest preferowany do sygnalizacji chwilowych problemów: komunikuje “wróć później” bez trwałych konsekwencji dla indeksacji.

Bezpieczne ograniczanie ryzyka na produkcji

Jeśli testujesz na produkcji, ogranicz powierzchnię ryzyka. Uruchamiaj przeciążenie w krótkich oknach, najlepiej o niskim ruchu. Stosuj filtrowanie po IP, aby dotyczyło tylko Googlebota, lub wybierz izolowany host testowy (np. subdomena kontrolowana przez robots.txt i bez linków wewnętrznych). Miej przygotowany runbook: przywracanie limitów, skalowanie poziome, wyłączanie reguł WAF, przepuszczenie ruchu po CIDR z weryfikacją rDNS.

Zbieranie i analiza logów HTTP

Konfiguracja logowania po stronie serwera

Aby rzetelnie badać zachowanie bota, rozszerz dzienniki serwera web. Dla Nginx użyj własnego formatu log_format, obejmującego m.in.: $remote_addr, $http_user_agent, $request, $status, $request_time, $upstream_response_time, $body_bytes_sent, $http_referer, $http_x_forwarded_for, $request_length, $bytes_sent, $connection_requests, $server_protocol. Dodaj identyfikator żądania (np. X-Request-ID) i wersjonuj konfigurację.

W Apache httpd w LogFormat dołóż %t, %a, %U%q, %s, %D i %I/%O, a w razie proxy – %{X-Forwarded-For}i. W aplikacji warto logować ETAs generowania (np. check-pointy w middleware), aby łatwiej wykrywać, gdzie powstają wąskie gardła (aplikacja vs baza vs cache vs upstreamy).

Segmentacja botów i identyfikacja wariantów

Warto zbudować reguły klasyfikacji żądań: user agent zawiera Googlebot (smartphone/desktop), AdsBot, Google-InspectionTool. Pamiętaj, że sam UA nie jest dowodem – wnioski opieraj na zweryfikowanych IP. Osobno licz ruch do ścieżek wymagających renderingu (HTML) i do zasobów statycznych (CSS/JS/obrazki), aby zrozumieć, czy spadek wydajności dotyka bardziej serwowania HTML, czy assetów – reakcja bota może być inna.

Wyodrębnij parametryzowane strony, infinite scroll, feedy i endpointy API. Googlebot na smartfony potrafi renderować i dociągać zasoby – w przeciążeniu haversy te mogą odpadać pierwsze, co zmienia obraz całości (np. spada liczba render fetches przy stałej liczbie initial fetches).

Wskaźniki i progi alarmowe

Podstawowe wskaźniki do monitorowania podczas przeciążenia:

  • Intensywność: RPM/ RPS od Googlebota, liczba równoległych połączeń, rozkład w czasie (minuta, pięć minut).
  • Jakość odpowiedzi: udział 5xx (w szczególności 503 i 502/504), 429, 408/499 (klient przerwał połączenie), p95/p99 TTFB i TTLB, wielkość odpowiedzi.
  • Stabilność: burstiness (odchylenie standardowe RPM), średnia długość keep-alive, resetowane połączenia.
  • Zachowanie bota: czas do ograniczenia crawl po pojawieniu się błędów, tempo powrotu po ustaniu problemów, zmiany w głębokości crawl.

Za sygnał ostrzegawczy uznaj rosnący udział 5xx > 1–2% w krótkim oknie i p95 TTFB > 2–3 s. W takiej sytuacji włącz kontrolowane zwracanie 503 z Retry-After, aby sterować tempem crawl i chronić UX użytkowników.

Narzędzia analityczne i przykłady pracy z danymi

Do szybkiego wglądu sprawdzi się GoAccess (widok live RPS, statusy, UA), a do głębszej analizy – ELK/Opensearch lub BigQuery. Warto budować wykresy: żądania Googlebota vs 5xx w czasie, heatmapy ścieżek i typów zasobów, wykresy korelacji TTFB a udziału 5xx. Dodatkowo skonfiguruj alerting (Prometheus/Grafana) dla progów krytycznych i regresji.

W BigQuery lub innym magazynie twórz widoki: ruch tylko ze zweryfikowanych IP Google, pivot po statusach, histogram TTFB. Dzięki temu łatwo porównisz okna baseline, przeciążenia i powrotu do normy, a następnie zbudujesz modele predykcyjne (np. kiedy grozi wysycenie workerów).

Reakcje Googlebota na błędy i sterowanie tempem crawl

Semantyka statusów: 5xx, 429, 503 i Retry-After

Google interpretuje 5xx jako problemy po stronie hosta i automatycznie ogranicza tempo crawl (backoff). 429 Too Many Requests również jest traktowane jak sygnał “za szybko” i skutkuje spowolnieniem. Z kolei 503 Service Unavailable z nagłówkiem 503 + Retry-After to najczystszy sposób na zakomunikowanie tymczasowej niedostępności wraz z preferowanym oknem powrotu.

Praktyka: dla planowanych krótkich okien prac serwisowych używaj 503 z Retry-After = 120–600 s. Dla przeciążenia dynamicznego – moduluj Retry-After adaptacyjnie (np. 60 s, 120 s, 300 s) w zależności od metryk. Unikaj niekontrolowanych 500/502/504: mieszają semantykę i wydłużają powrót bota. 4xx inne niż 429 sygnalizują problemy trwałe (np. 404), nie używaj ich do throttlingu.

Empiryczne progi i algorytm backoff

Choć Google nie publikuje dokładnych progów, praktyka pokazuje, że przy wzroście 5xx do kilku procent w krótkich oknach (minuty) Googlebot potrafi zauważalnie ograniczyć równoległość i RPS w ciągu kilkunastu–kilkudziesięciu minut. 503 z Retry-After często skutkuje szybszym i łagodniejszym backoffem niż seria niekontrolowanych 500. Powrót do normy bywa stopniowy i może zająć od godzin do dni, zależnie od historii stabilności hosta i dostępnego budżetu crawl.

Testuj różne wartości Retry-After (np. 60 s vs 300 s) oraz strategie: 503 tylko dla HTML vs dla wszystkich zasobów. Porównuj szybkość normalizacji RPM i zmiany głębokości crawl. Ograniczenie dotkliwości przeciążenia nawet o 20–30% w krytycznym oknie może zapobiec gwałtownym spadkom pokrycia indeksu.

Robots.txt, crawl-delay i ustawienia Search Console

Dyrektywa crawl-delay w robots.txt jest ignorowana przez Google, nie używaj jej do throttlingu. Blokady w robots.txt hamują indeksację i powinny być ostatecznością. Zamiast tego stosuj kontrolowane 503/Retry-After lub tymczasowe reguły w aplikacji/WAF dla niekrytycznych tras.

Panel Search Console historycznie pozwalał ograniczyć tempo crawlu, ale w większości kont ta opcja została wycofana. Jeżeli masz do niej dostęp, używaj jej oszczędnie i tylko krótkoterminowo. Kluczowe jest utrzymanie technicznej kondycji hosta – Google dostosowuje tempo na podstawie sygnałów jakości i stabilności.

Cache, CDN i strategie odpowiedzi

Agresywne cache’owanie i pre-rendering kluczowych stron zmniejszają presję na aplikację. Jeśli korzystasz z CDN, rozważ allowlist dla zweryfikowanych IP Google oraz priorytety na krawędzi dla HTML i krytycznych assetów. W przypadku przeciążenia originu – serwuj 503 z krawędzi wraz z Retry-After, by uniknąć lawinowego obciążenia połączeń zwrotnych do originu. Ustal też właściwą politykę 304 Not Modified dla zasobów wersjonowanych – redukuje transfer bez ryzyka mylnej semantyki błędów.

Projekt eksperymentu i interpretacja wyników pod kątem SEO

Hipotezy, zmienne i plan

Przygotuj hipotezy: np. “503 z Retry-After=120 s szybciej stabilizuje crawl niż spontaniczne 500 przy tym samym poziomie przeciążenia”. Zdefiniuj zmienne niezależne (typ błędu, wartość Retry-After, kanał dotkniętych zasobów, poziom throttlingu) i zależne (czas do backoffu, minimalny RPM, czas powrotu do baseline, udział 5xx, zmiana głębokości crawl). Ustal grupy: kontrolną (bez ingerencji) oraz testową (z wybraną strategią), najlepiej na równoległych hostach lub segmentach URL.

Ramy czasowe: okno przygotowania (baseline), okno przeciążenia, okno powrotu. Każde powinno być wystarczająco długie, by zebrać statystycznie istotny wolumen żądań bota (setki–tysiące). W przeciwnym razie wnioski będą obarczone dużą wariancją.

Korelacja z raportem Crawl Stats i innymi danymi

Raport Crawl Stats w Search Console pokaże dobową intensywność i średnie TTK (time spent downloading a page). Koreluj te dane z logami serwera, aby zweryfikować, czy zmiana widoczna w logach odzwierciedla się w wykresach Google (często z opóźnieniem). Sprawdzaj “Host status” – jeśli Google sygnalizuje trudności z dostępem, to potwierdza zbyt agresywne przeciążenie lub niewystarczającą sygnalizację 503/Retry-After.

Połącz to z metrykami indeksacji: tempo pojawiania się nowych adresów w indeksie, opóźnienia między publikacją a pierwszym crawlem, wskaźnik “Discovered – currently not indexed”. Długie okna przeciążenia mogą zwiększać ten kubełek, szczególnie gdy błędy dotyczą stron kanonicznych.

Wpływ na indeksowanie, kanonikalizację i ranking

Przeciążenie i wysokie 5xx obniżają zaufanie crawl do hosta, co może chwilowo zmniejszyć tempo odkrywania i re-crawlu. Upewnij się, że w krytycznych momentach kanoniczne adresy zwracają 200, a nie są objęte 503/429 – priorytetyzuj je w regułach. Nie zmieniaj kanonikali, hreflangów i map witryny w trakcie testów; zachowanie spójności ułatwia Google ocenę stabilności.

Jeżeli strona opiera się na renderingu JS, monitoruj czas i powodzenie fetchy assetów. W przeciążeniu część zasobów pomocniczych może nie być dociągana – to zafałszuje sygnały o jakości strony. Minimalizuj rozmiar HTML i krytycznego CSS, aby skrócić TTFB/TTLB i utrzymać dobrą percepcję jakości hosta przez bota.

Runbook, automatyzacja i dobre praktyki

Przygotuj automatyczne polityki: gdy udział 5xx > X% i p95 TTFB > Y s, włącz 503 z Retry-After=120 s dla wybranych ścieżek i obniż limity równoległych połączeń. Po ustąpieniu przeciążenia automatycznie skracaj Retry-After i rozszerzaj zakres 200. Loguj decyzje kontrolera (feature flagi, wartości progów), aby móc je odtworzyć w analizach.

Ustal listę krytycznych URL-i, które zawsze powinny pozostać dostępne 200 (strona główna, huby kategorii, sitemap.xml). Dla pozostałych ścieżek stosuj stopniowane 503. Dokumentuj eksperymenty w repo (data, zakres, zmienne), aby budować wiedzę organizacyjną i skrócić czas reakcji przy kolejnych incydentach.

Włącz monitoring biznesowy: wpływ przeciążenia na konwersje i ruch organiczny. Nawet jeśli crawl szybko się stabilizuje, długotrwałe okna niskiej dostępności mogą wpływać na ranking przez pośrednie sygnały jakościowe. Dąż do tego, by przeciążenie było krótkie i dobrze zakomunikowane protokołem HTTP, a nie losową mieszanką błędów.

Na koniec pamiętaj: testuj hipotezy iteracyjnie, obejmując małe segmenty URL i krótkie okna czasowe. Zacznij od miękkich interwencji (caching, priorytetyzacja, optymalizacja zapytań), a dopiero potem przechodź do twardszego throttlingu. Systematyczna, rzetelna weryfikacja danych i klarowna sygnalizacja 503/Retry-After pozwalają utrzymać kontrolę nad tempem crawlu bez ryzyka trwałej utraty pokrycia.

< Powrót

Zapisz się do newslettera


Zadzwoń Napisz