Jak zoptymalizować stronę internetową?
Co generuje obciążenie?
Najczęściej występujące przyczyny to:
- oprogramowanie oparte o AJAX, generujące wiele żądań HTTP (np. czat, shoutbox)
- roboty sieciowe skanujące witrynę
- ataki słownikowe na popularne skrypty typu WordPress, Joomla itp.
- oprogramowanie, którego ciągłość pracy uzyskuje się przez uruchamianie skryptu co minutę (zadania Cron) - np. skrypty do zamieszczania wpisów w katalogach stron
- systemy wymiany linków
- kopie zapasowe (dotyczy kont o dużej zajętości powierzchni dyskowej oraz o dużej liczbie małych plików)
- duże bazy danych
- operacje na katalogach zawierających duże ilości małych plików
Jak zidentyfikować przyczynę?
Każdorazowo po przekroczeniu limitu obciążenia przesyłamy raport z najbardziej obciążającymi procesami. Nazwa procesu zawiera ścieżkę do pliku, który powoduje obciążenie i na tej podstawie można stwierdzić która strona WWW powoduje problem.
Warto przeanalizować plik logów żądań HTTP danej witryny. Logi są dostępne w panelu DirectAdmin:
Statystyki/Logi - Logi Apache'a - Pełne logi
Starsze logi są dostępne w katalogu:
/domains/mojadomena.pl/logs/
Najczęściej problem można stwierdzić już po pobieżnym zapoznaniem się z treścią logów, będą to powtarzające się żądania z tych samych adresów IP lub do tych samych ścieżek URL.
Jeżeli w pliku nie znajdujemy żadnych niepożądanych żądań, przyczyną jest najprawdopodobniej zasobożerność samej witryny. W takim przypadku warto ograniczyć funkcjonalność witryny np. przez wyłączenie mniej potrzebnych modułów, rozszerzeń czy wtyczek.
Wiele informacji jest także dostępnych w statystykach AwStats, które są także dostępne w panelu DirectAdmin:
Statystyki/Logi - AwStats - wszystkie miesiące (cgi)
Co zrobić, gdy najbardziej obciążającym procesem są żądania HTTP?
Należy rozpoznać przyczynę zgodnie z powyższym opisem. Jeżeli żądania dotyczą plików statycznych (obrazów, stylów, plików JavaScript i innych), warto dodać witrynę do CloudFlare.
Blokowanie robotów sieciowych/ataków słownikowych
Blokowanie robotów zostało opisane w oddzielnych artykułach: blokowanie po adresie IP, blokowanie po user-agent. Prosimy o weryfikację, czy blokowany adres IP nie pochodzi na przykład od robota Googlebot, niezbędnego dla indeksacji witryny w wyszukiwarce Google. Można tego dokonać na przykład za pomocą tego narzędzia.
Cache
Większość popularnych skryptów witryn posiada możliwość buforowania stron lub danych w celu ich szybszego wyświetlania. Czasami opcja jest dostępna standardowo (np. w podstawowej instalacji systemu Drupal) lub zapewnia ją dodatkowy moduł, wtyczka lub rozszerzenie. Uwaga, niekiedy zdarza się, że włączenie cache przynosi efekt odwrotny od zamierzonego — witryna generuje jeszcze większe obciążenie.
Moduł Mod_Security
Moduł blokuje większość ataków oraz niepożądanych robotów sieciowych. Domyślnie jest on włączony, jeżeli go Państwo wyłączyli, zalecamy ponowne włączenie oraz wyłączenie konkretnych reguł, które powodują problemy w działaniu strony.
Blokada krajów
Warto także wyłączyć obsługę witryny dla krajów, z których odwiedzający nie są naszą grupą docelową. Większość ataków na strony WWW pochodzi z krajów słabo rozwiniętych. Opcja jest dostępna w panelu DirectAdmin:
Opcje zaawansowane - Blokada krajów
Optymalizacja MySQL
Porady optymalizacyjne dotyczące bazy MySQL zostały przedstawione w oddzielnym artykule.