Część osób zdążyło się już przekonać, jak niebezpieczne może być generowanie dużego obciążenia przez serwer. Wysoka utylizacja zasobów, to nie tylko pogorszenie szybkości wczytywania stron, ale również utrata klientów, albowiem podczas dużego obciążenia nie będzie można składać zamówień (błędy 500, białe strony, długie czasy oczekiwania), klienci pójdą do konkurencji, która zadbała o najdrobniejszy szczegół – w tym o optymalizację ruchu botów na stronie. W tym artykule omówię, jak w prosty sposób odciążyć serwer w godzinach szczytu, poprzez ustawienia prędkości indeksowania przez Bing Bota.
Częstotliwość indeksowania w Bing Webmaster Tools
W pierwszej kolejności, musisz zaopatrzyć się w konto Bing Webmaster Tools (Narzędzia Bing dla webmasterów). W tym celu udaj się na stronę http://www.bing.com/toolbox/webmaster i zarejestruj nowe konto.

Następnie dodaj witrynę sklepu, wymagana jest weryfikacja domeny, możesz to zrobić na kilka sposobów, najprostszy do wdrożenia (w sklepach SaaS) – dodanie rekordu DNS domeny, jednak przy tym wariancie będziesz musiał odczekać, czasem nawet do 24h. Jeżeli nie chcesz czekać, wybierz przesłanie pliku BingSiteAuth.xml na serwer (oczywiście o ile masz dostęp do serwera FTP, w sklepach self-hosted nie powinno być problemu).

Masz już konto, możesz przystąpić do ustawienia prędkości indeksowania. Przejdź do: Pulpit nawigacyjny => Konfiguruj moją witrynę => Kontrola przeszukiwania

Na powyższym przykładzie zaznaczyłem, że Bing bot ma przeszukiwać stronę w godzinach 2:00 – 6:59 z częstotliwością 90%. Zaznacz na siatce częstotliwość indeksowania, możesz ustawić zakres od 10 do 100. Zapewne zapytasz, skąd mam wiedzieć jakie zakresy ustawić… już odpowiadam!
Raporty niestandardowe w Google Analytics
Statystycznie najwięcej użytkowników odwiedza strony w godzinach 8:00 – 17:00 aczkolwiek są branże, w których bardzo wysoki wolumen ruchu jest też w godzinach wieczornych, dlatego nie możesz iść na ślepo, musisz zasięgnąć pomocy… Google Analytics.
Twój sklep z pewnością ma wdrożone śledzenie Analytics, w związku z czym możesz wykorzystać zgromadzone tam dane, do zweryfikowania, w jakich godzinach Twoja strona jest najczęściej odwiedzana. Dzięki danym będziesz mógł precyzyjnie oznaczyć czas na siatce w Bing Webmaster Tools.
Zaloguj się do Google Analytics, następnie przejdź na zakładkę „Dostosowanie” i wybierz Nowy raport niestandardowy.

Nadaj raportowi jakiś tytuł, najlepiej związany z tematyką czyli „Odwiedziny według godziny”, następnie w sekcji Grupy danych kliknij niebieski prostokąt +dodaj dane, po czym rozwiń drzewo Użytkownicy i wybierz Odsłony lub Sesje, ewentualnie wykorzystać możesz dane tylko z bezpłatnych wyników wyszukiwania, czyli użytkowników którzy odwiedzili Twoją stronę za pośrednictwem wyszukiwarki Google (w przykładzie na zrzucie wybrałem bezpłatne wyniki wyszukiwania).

Teraz w sekcji Analizy wymiarów musisz wybrać godzinę, więc kliknij +dodaj wymiar i z listy wskaż Czas => Godzina. Jeżeli masz więcej widoków danych, możesz wskazać do którego raport będzie miał zastosowanie. Po skonfigurowaniu wszystkiego kliknij Zapisz.

W ten sposób utworzyłeś raport niestandardowy, który pozwoli wyodrębnić to czego szukamy. Poniżej widok karty raportu „Odwiedziny według godziny”.

Do sprawdzenia odwiedzin według pory dnia możesz także użyć statystyk serwera, jednak jeżeli Twój sklep/strona znajduje się na sharedzie, ta funkcja może być wyłączona. Częstą praktyką na obleganych hostingach współdzielonych jest wyłączanie „zbędników”, aby upchać na nich jeszcze więcej klientów, także staty serwera mogą być, ale równie dobrze może ich nie być 🙂
Czy jest jakiś sposób na Yandex bot?
Na poziomie Yandex Webmaster Tools nie pamiętam, aby była podobna opcja jak w Bingu, jak będę miał chwilę wolnego sprawdzę jeszcze raz, bo może coś dołożyli/zmodyfikowali.
Na ścisłość możesz zastosować w robots.txt dyrektywę Crawl-delay z opóźnieniem (timeout w sekundach) np.
User-agent: Yandex
Crawl-delay: 4
Natomiast tę dyrektywę bot może uwzględnić, ale nie musi.
Jak nie zależy ci na ruchu z wyszukiwarki Yandex, sugeruję całkiem zablokować bota na poziomie htaccess. Możesz zastosować blokowanie tego typu:
SetEnvIfNoCase User-Agent "Yandex" bad_bot
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>
Jeżeli Twój serwer nie obsługuje mod_setenvif to rzuć okiem na mój artykuł na techformatorze o pliku htaccess. Przedstawiłem w nim 2 metody blokowania, bazując na User Agent bota można zrobić blokadę podobnie jak w poradniku.
Jest dużo botów które generują niepotrzebnie obciążenie. Można wszystkie wykluczyć w htaccess lub w iptables. Sposobu z bingiem nie znałem przetestuje.
A znacie jakieś inne metody skuteczne na zmniejszenie obciążenia serwera?
Obciążenie serwera można zmniejszyć na wiele innych sposobów np. poprzez minimalizację liczby zapytań generowanych przez skrypt. Na niektórych serwerach współdzielonych są dostępne monitory obciążenia cpu, które pokazują który ze skryptów (plików) generuje największe obciążenie. Nawet bez dedykowanego monitora obciążenia jesteśmy w stanie wykryć potencjalny problem analizując logi serwera. Warto również zadbać o wyeliminowanie duplicate content w obrębie strony – wielokrotne pobieranie tego samego zasobu może prowadzić do dużego obciążenia serwera. Wyeliminowanie problemów z dostępnością strony to podstawowa czynność w sklepach z wysokim wolumenem ruchu. Warto jeszcze wspomnieć, że duże obciążenie serwera nie zawsze związane jest ze źle napisaną wtyczką, templatką czy plikiem. Zawsze w takich sytuacjach należy zacząć od identyfikacji wąskiego gardła, a tym może być prawie każdy element strony, nawet niepozorny dodatek do strony wyświetlający monit z informacją o plikach cookies.
Działa!