Jak rozwiązywać problemy z powolnym działaniem stron internetowych?

Jeżeli Twoja strona internetowa wykazuje znaczące opóźnienia w działaniu, a masz pewność, że nie jest to spowodowane dużą liczbą odwiedzających, konieczna jest analiza jej działania na serwerze hostingowym. Istnieje kilka potencjalnych przyczyn powolnego działania witryny, które specjalnie dla naszych Klientów omawiamy poniżej wraz z rozwiązaniami. Zapraszamy do lektury 🙂

Wysycanie zasobów

Każde konto hostingowe posiada przypisane pewne parametry sprzętowe, które określają jego wydajność. Te parametry to Procesor (CPU, liczony w rdzeniach), ilość pamięci RAM, przepustowość dysku twardego oraz liczba jednoczesnych procesów PHP/CGI/CRON. W zależności od posiadanego pakietu mogą się one różnić, a szczegółowe parametry naszych pakietów hostingowych można znaleźć w specyfikacji technicznej: https://cyberfolks.pl/specyfikacja-techniczna-uslug.pdf

Wysycanie wymienionych zasobów na koncie hostingowym może prowadzić do problemów wydajnościowych i utraty dostępności/poprawnego działania stron internetowych, dlatego ważne jest, aby zrozumieć jakie limity i zasoby sprzętowe są dostępne na Twoim koncie i jak zarządzać nimi w celu uniknięcia problemów.

Oczywiście jeżeli zasoby wysycane są z powodu dużej liczby odwiedzających Twoje strony internetowe lub jeżeli posiadasz na hostingu wymagające aplikacje (np. aplikacje CMS z dużą liczbą wtyczek lub większe sklepy internetowe) — może być konieczne przejście na wyższy, bardziej wydajny pakiet hostingowy: https://cyberfolks.pl/pomoc/jak-zwiekszyc-pakiet-hostingowy/

Uwaga!: Na zwiększenie pakietu hostingowego zdecyduj się dopiero po sprawdzeniu, czy zasoby nie są wysycane z powodu nieprawidłowego działania Twojej strony. Aby to sprawdzić, postępuj według poniższych kroków:

1. Zaloguj się do Panelu Administracyjnego hostingu: https://cyberfolks.pl/pomoc/logowanie-sie-do-panelu-administracyjnego/

2. Po zalogowaniu do panelu Direct Admin wybierz domenę z listy, następnie przewiń dostępne opcje w dół i przejdź do sekcji “Pozostałe ustawienia” -> “Wykorzystanie zasobów”:

3. Jeżeli zasoby nie są wysycane, zobaczysz komunikat “Twoje konto nie miało żadnych problemów z limitami w ciągu ostatnich 24 godzin”. Jeżeli jednak zasoby rzeczywiście są/były w ciągu ostatnich godzin wysycane, możesz otrzymać komunikat podobny do poniższego:

4. Jeżeli w Panelu Administracyjnym swojego hostingu widzisz komunikat podobny do powyższego, warto przyjrzeć się sekcji „Current Usage” w celu sprawdzenia bieżącego wykorzystania zasobów hostingowych. W sekcji „Snapshot” znajdziesz zapisane żądania HTTP oraz procesy, które były aktywne na serwerze w chwili, kiedy doszło do wysycenia zasobów (możesz wyświetlać je z wybranego dnia oraz godziny). Oczywiście jeżeli w danym dniu zasoby nie były wysycane, “Snapshoty” z tego dnia również nie będą dostępne.

Często zdarza się, że w sekcji 'Snapshot’ widnieją tylko ścieżki do pliku index.php, który jest plikiem startowym każdej strony. Taka sytuacja może wskazywać na to, że ze strony korzystało wówczas wielu odwiedzających, lub że sama strona jest bardzo rozbudowana/obciążona dużą liczbą wtyczek, co sprawia, że jej wczytanie staje się wyjątkowo wymagające dla serwera.

5. Możliwe jest również, iż jedna z wtyczek na stronie (w przypadku korzystania z systemu CMS, jak np. WordPress), może powodować problemy. Czasami po aktualizacji wtyczek zdarza się, że nie są one kompatybilne z innymi zainstalowanymi wtyczkami (najczęściej w konflikty ze sobą wchodzą duże, wielozadaniowe wtyczki służące do translacji stron, zabezpieczania stron, duże motywy, rozbudowane edytory wizualne jak również wtyczki tworzące zadania wp-cron najczęściej służące do tworzenia kopii zapasowych, mailingów czy też crawlery).

6. Po aktualizacji wtyczek w zapleczu strony, może również wystąpić problem z wersją PHP z której korzysta dana strona. Może to prowadzić do jej nieprawidłowego działania np. z powodu niekompatybilności zaktualizowanej wtyczki ze starszą wersją PHP (wersję PHP dla każdej strony możesz zmienić indywidualnie, z pomocą innego naszego poradnika: https://cyberfolks.pl/pomoc/jak-zmienic-wersje-php-domeny/).
Kompatybilność modułów/elementów strony z daną wersją PHP jest bardzo ważna (skrypty, wtyczki, motywy, wersja CMS), pamiętaj jednak że regularne aktualizowanie wykorzystywanej przez Twoją stronę wersji PHP oznacza wyższy poziom bezpieczeństwa i wydajności tej strony.

Porada od _Folksów!: Pamiętaj aby aktualizować wtyczki w zapleczu swojej strony pojedynczo, w sytuacji gdy klikniesz „Aktualizuj wszystkie” a Twoja strona przestanie działać, czasochłonne będzie zlokalizowanie która dokładnie wtyczka powoduje problem po aktualizacji.

7. Aby zweryfikować czy zasoby hostingu są wysycane przez jedną z wtyczek, wyłączaj je pojedynczo i testuj działanie strony. Jeżeli po wyłączeniu konkretnej wtyczki strona zacznie działać zauważalnie lepiej, a wykorzystanie zasobów hostingu spadnie, oznacza to iż ta konkretna wtyczka powoduje problem. Przeinstaluj ją wówczas, znajdź jej “zamiennik” lub zwróć się z prośbą o pomoc do swojego webmastera (jeżeli Twoja strona jest oparta o WordPress, możesz również zwrócić się z prośbą o pomoc do naszego działu wp_Assist który świadczy odpłatną pomoc webmasterską: https://cyberfolks.pl/wordpress/wp_assist/).

Porada od _Folksów!: Jeżeli nie jesteś w stanie zalogować się do zaplecza swojej strony opartej o WordPress, istnieje inny sposób na wyłączanie wtyczek. Przejdź w Panelu Direct Admin do Managera Plików do katalogu plików Twojej domeny (jak zweryfikować katalog z którego wczytuje się Twoja strona dowiesz się z innego poradnika: https://cyberfolks.pl/pomoc/jak-przypisac-katalog-dla-domen-i-subdomen/) następnie przejdź do podkatalogu wp-content/plugins gdzie znajdziesz katalogi plików swoich wtyczek. Jeżeli zmienisz nazwę katalogu wtyczki (np. z „wtyczka” na „wtyczka2”), przestanie być ona widziana przez WordPressa, a tym samym tymczasowo ją wyłączysz. Jeżeli zechcesz ponownie aktywować tę wtyczkę, przywróć pierwotną nazwę jej katalogu.

8. Inną typową sytuacją są widoczne w sekcji “Snapshot” zadania Cron wysycające zasoby (o ile ustawiałeś/aś jakieś zadania Cron w Panelu Direct Admin, zweryfikuj przy pomocy narzędzia: https://crontab.guru czy Twoje zadania nie wykonują się zbyt często, oraz sprawdź, czy zadania te są poprawnie ustawione z pomocą naszego poradnika: https://cyberfolks.pl/pomoc/jak-ustawic-zadania-cron/).

Dla stron opartych o WordPress!: Możesz również znaleźć w sekcji “Snapshot” zadania “wp-cron”, są to wewnętrzne zadania wykonywane okresowo przez WordPressa i jego wtyczki. Przykładową sytuacją która może mieć miejsce, jest wysycanie dysku twardego w nocy przez zadanie wp-cron spowodowane na przykład wtyczką, która w nocy tworzy kopie zapasowe Twojej strony. Nie jest to wówczas zachowanie niepożądane, choć rzeczywiście w nocy w czasie tworzenia kopii zapasowej przez pewien czas strona/strony mogą działać ociężale. Aby podglądać i zarządzać zadaniami wp-cron, możesz posłużyć się jedną z darmowych wtyczek: https://wordpress.org/plugins/tags/cron/

9. Wysycanie zasobów konta hostingowego może (choć nie musi) być spowodowane infekcjami na stronach internetowych. Pamiętaj, aby dla swoich stron włączyć separację domen która zabezpieczy Twoje strony na przyszłość przed „rozlewaniem się” infekcji z jednej strony na pozostałe o ile masz ich na hostingu więcej niż jedną. Pamiętaj że separacja jest najskuteczniejsza gdy jest włączona dla wszystkich domen dodanych do hostingu. Poradnik: https://cyberfolks.pl/pomoc/jak-wlaczyc-separacje-domen/

Aby wykonać skanowanie antywirusowe, które pomoże Ci wykryć infekcje, skontaktuj się z nami emailowo na wsparcie@cyberfolks.pl z prośbą o uruchomienie takiego skanu na Twoim hostingu. Wyniki skanowania znajdziesz po kilku-kilkunastu godzinach w głównym katalogu Twojego konta hostingowego w pliku skan-DATA.txt, a gdy skan się zakończy, w ostatnich linijkach tego pliku znajdziesz podsumowanie wyników skanowania rozpoczynające się od: „———– SCAN SUMMARY ———–„.

10. Dla stron opartych o WordPress!: Jeżeli nadal nie udało Ci się zlokalizować przyczyny wysycania zasobów na hostingu, zainstaluj w Kokpicie swojej strony darmową wtyczkę “Query Monitor” – jest to panel narzędzi programistycznych dla WordPress. Umożliwia debugowanie zapytań do baz danych, błędów PHP, kolejkowanych skryptów, wywołań API HTTP i nie tylko.

11. Dla stron opartych o WordPress!: Jeżeli w sekcji Snapshot widzisz procesy admin-ajax.php, jest to część mechanizmu Heartbeat API w WordPressie i może być ono wykorzystywane np. przez wtyczki, co czasem prowadzi do wysycania zasobów. W zarządzaniu tym mechanizmem pomoże Ci wtyczka „Heartbeat Control” dostępna za darmo.

Strona działa powoli, pomimo iż zasoby nie są wysycane — jak ją zoptymalizować?

Jeżeli zasoby Twojego hostingu nie są wysycane, ale Twoja strona działa powoli i nieefektywnie, przyczyną tego może być brak odpowiednich optymalizacji na stronie oraz używane wtyczki, które wydłużają czas renderowania strony (jest to proces, w którym serwer przetwarza stronę przed wyświetleniem jej użytkownikowi), czyli czas, który osoba odwiedzająca stronę musi odczekać, zanim strona zostanie jej wyświetlona. Parametr ten nazywamy TTFB (Time To First Byte).

Zanim zaczniesz badać, co warto zoptymalizować na Twojej stronie, upewnij się że dla wersji PHP której używa Twoja strona, ustawione są odpowiednio duże limity PHP takie jak:
memory_limit – rekomendujemy dla mniejszych stron co najmniej 256 MB a dla dużych stron co najmniej 512MB (maksymalnie ustawić można 1024 MB, czego nie rekomendujemy w przypadku niższych pakietów hostingowych)
max_execution_time – rekomendujemy ustawić na 900 (sekundy)
max_input_time – rekomendujemy ustawić na 900 (sekundy)
W zwiększeniu limitów PHP pomoże nasz poradnik: https://cyberfolks.pl/pomoc/jak-zmienic-parametry-php/

1. Jeśli chcesz dokładnie zbadać wydajność swojej strony internetowej, istnieją do tego darmowe narzędzia, takie jak GTmetrix (https://gtmetrix.com) lub Google PageSpeed (https://pagespeed.web.dev). Te narzędzia przeprowadzą kompleksową analizę Twojej strony i ocenią różne aspekty jej działania. Mogą one zidentyfikować potencjalne problemy które wymagają poprawy, takie jak:

– Konieczność optymalizacji grafik na stronie (skompresowania ich oraz zmiany formatu plików).
Spowolnienie ładowania strony z powodu zewnętrznych zasobów, takich jak multimedia pobierane z innych witryn, na które strona oczekuje (a więc czas ładowania wydłuża się z powodu zapytania do zewnętrznego serwera).
– Obecność nieużywanego kodu JavaScript lub CSS na stronie.
– Długi czas reakcji serwera (TTFB — Time To First Byte o którym wspominaliśmy wcześniej). Warto zaznaczyć, że ten parametr niekoniecznie jest związany z samym serwerem hostingowym. Nasi administratorzy stale pracują nad równomiernym rozkładem obciążenia na serwerach, a informacje o ewentualnych awariach publikujemy tutaj: (https://status.cyberfolks.pl). Zazwyczaj długie czasy TTFB wynikają z używanych na stronie wtyczek, które wydłużają czas renderowania strony oraz zasobów zewnętrznych osadzonych na stronie.

Przyczyną długiego wczytywania strony może być również jej wielkość, znaczny wpływ na nią mają grafiki i multimedia na stronie, dlatego ważnym jest aby dbać o odpowiednią kompresję i format grafik wyświetlanych na stronie. Aktualnie zalecanym formatem grafiki na stronach internetowych jest WebP. W kompresji i konwersji grafik (obrazków) pomóc mogą darmowe wtyczki. Przykładowo dla WordPressa: https://wordpress.org/plugins/search/optimize+images/

Ciekawostka! Popularną technologią jest również Image LazyLoad — ponieważ grafiki zazwyczaj są obszernymi elementami podczas wczytywania strony, można “zakolejkować” kolejność przesyłania danych do klienta odwiedzającego stronę w taki sposób, aby najpierw otrzymał on kod i logikę strony, a dopiero później grafiki (standardowo wszystkie dane przesyłane są równolegle). Również grafiki osadzone np. w dolnej części strony mogą być dzięki mechanizmowi LazyLoad wczytywane po kolei, dopiero gdy użytkownik przewija stronę coraz niżej. Skraca to czas TTFB, a więc klient widzi stopniowe wczytywanie strony, zamiast oczekiwać na pełny rezultat. Image LazyLoad możesz zaimplementować w swojej stronie przy pomocy darmowych wtyczek. Przykładowo dla WordPressa: https://wordpress.org/plugins/search/image+lazy+load/

2. Dla stron opartych o WordPress oraz PrestaShop!: Aby poprawić czas TTFB, warto wdrożyć na stronie Cache’owanie obiektowe. Na naszych hostingach WordPress, WooCommerce oraz PrestaShop oferujemy funkcję serwera REDIS, który możesz zintegrować ze swoją stroną przy pomocy wtyczki LSCache, dostępnej dla różnych systemów CMS: https://www.litespeedtech.com/products/cache-plugins
Zajrzyj proszę na nasz blog, opisaliśmy tam szczegółowo jak zainstalować Redis w WordPressie: https://cyberfolks.pl/blog/3-kroki-do-lepszej-wydajnosci-i-bezpieczenstwa-wordpress/