Moment w którym nasza strona wyraźnie zwalnia lub nie działa w pełni poprawnie, a nie znamy powodu tej sytuacji, może rodzić się poczucie bezradności, tym bardziej gdy nie wiemy jak się w ogóle za to zabrać. Z pomocą jednak przychodzi nam kilka narzędzi, a jednym z nich jest wtyczka do WordPress’a Query Monitor! Dzięki niej możemy sprawdzić czas ładowania strony, jakie zapytania są wykonywane do bazy danych oraz ile one trwają. Query Monitor wskaże również ewentualne błędy PHP, połączenia z zewnętrznymi API i więcej. Dzisiaj postaram się omówić najważniejsze kwestie tego rozwiązania, które broni się samo już po powyższym wstępie, zapraszam jednak do dalszego czytania, gdzie staram się tłumaczyć w jaki sposób można się nią posługiwać.
- Czym jest wtyczka Query Monitor
- Jak zainstalować wtyczkę Query Monitor w WordPress
- Jak zbadać nią swoją stronę
- Jak uruchomić ciasteczko uwierzytelniające
Czym jest Query Monitor
Jak już wspomniałem jest to wtyczka, którą można zainstalować na stronie opartej o CMS WordPress. Zaczyna działać od razu po jej włączeniu serwując nam ważne informacje, często zrozumiałe nawet dla osób „nietechnicznych”, dlatego zachęcam do jego wypróbowania jeśli zaliczasz się do tej grupy. Według mnie najważniejsze cechy tego rozwiązania, z których najczęściej sam korzystam, to możliwość weryfikacji zapytań do bazy danych pod względem szybkości ich wykonywania, weryfikacji błędów PHP, zdobycia ogólnych informacji o stronie, ustawionych limitach PHP i wykorzystywania zasobów serwera na czas jej ładowania. Wiele z tych informacji jest inaczej niedostępnych lub ukrytych trochę głębiej w sercu WordPress’a.
Domyślnie Query Monitor będzie dla nas dostępny tylko gdy jesteśmy zalogowani do Panelu Administracyjnego strony. Zdarza się jednak czasami, że problem występuje na danej stronie tylko gdy odwiedzamy ją jako Gość. Na tę ewentualność również znajdziemy proste rozwiązanie, wystarczy ustawić ciasteczko uwierzytelniające, a wszystko to za pośrednictwem dwóch kliknięć, o czym napiszę później.
Jak zainstalować wtyczkę Query Monitor w WordPress
Instalację można przeprowadzić w standardowy sposób, będzie to zarazem najłatwiejsza jak i najszybsza procedura. Oto kroki, które należy przeprowadzić:
Krok 1.
Zaloguj się do Panelu Administracyjnego WordPress Twojej strony i z lewego menu kliknij na Wtyczki
Krok 2.
Na samej górze strony kliknij w Dodaj wtyczkę
Krok 3.
Po prawej stronie, w wyszukiwarce wpisz frazę query monitor
Krok 4.
Ukaże się nam lista powiązanych z tą frazą wtyczek. Nas interesuje tylko ta pierwsza, klikamy w Zainstaluj
Krok 5.
Po krótkiej chwili będziemy mogli kliknąć dokładnie w tym samym miejscu co na poprzednim obrazku, jednak przycisk będzie miał teraz nazwę Włącz. To spowoduje włączenie wtyczki i przeniesienie nas na stronę główną wtyczek.
Diagnozowanie stron z użyciem wtyczki Query Monitor
Po wykonaniu tych kroków w pasku administracyjnym przywita nas nowy element, który już od pierwszych chwil pokaże nam kilka ciekawych informacji.
Pierwsza z wartości pokazuje czas załadowania się strony, w sekundach. Drugi to ilość pamięci, jaką nasz WordPress zarezerwował w szczytowym momencie generowania strony. Trzeci pokazuje wspólny czas wykonania wszystkich zapytań do bazy danych, a czwarty to liczba wszystkich zapytań do bazy które zostały przeprowadzone w celu załadowania danej strony.
Po najechaniu kursorem myszki na ten element ukaże się nam lista najważniejszych narzędzi, jednak najlepiej w niego kliknąć, a na dole pojawi się główny panel wtyczki, który możemy rozciągnąć sobie w górę, ukazując pełnię możliwości tego rozwiązania i na tym właśnie się dzisiaj skupimy.
W poniższych punktach chciałbym opisać najbardziej przydatne funkcje tej wtyczki:
1. Overview
Znajdziemy tam ogólne informacje o tym jak dużo czasu strona potrzebowała, aby się załadować, jakie było maksymalne wykorzystanie pamięci serwera w najbardziej wymagającym momencie i jaki limit znajduje się w ustawieniach naszego WordPress’a, podsumowanie jak długo zajęły wszystkie zapytania do bazy danych, oraz czy mamy jakieś zapytania HTTP do i z API, i na koniec czy strona korzysta z cache obiektowego.
Informujemy: W Zenbox dajemy możliwość uruchomienia serwera Redis dla Hostingu Ebiznes 25k i Hostingu Profesjonalnego dla naszych klientów, do tego zupełnie za darmo. W związku z tym polecamy zapoznać się z naszym innym artykułem Szybki jak Redis w Zenbox.pl
2. Database Queries
Jedna z ważniejszych, jeśli nie najważniejsza funkcja wtyczki, która pokazuje nam ewentualne błędy w zapytaniach do bazy danych (Database Errors), czy strona posiada długo wykonujące się zapytania do niej (Slow Queries), oraz jakie elementy strony wykonują największą ilość zapytań (Queries by Component)
Sprawdźmy zatem błędne zapytania do bazy danych (Database Errors)
Na poniższym zrzucie ekranu możesz znaleźć informację o składni naszego zapytania, co go zainicjowało, jaki jest komunikat błędu oraz jego kod, co oczywiście może nam pomóc w łatwiejszej diagnozie naszego problemu.
W tym przypadku inicjatorem zapytania jest wtyczka Yoast SEO i przykładowym rozwiązaniem problemu może być aktualizacja tej wtyczki lub innych elementów strony, które mogłyby ze sobą kolidować, lub po prostu wyłączenie tej wtyczki i poszukanie nowej.
Następnie mamy weryfikację powolnych zapytań (Slow Queries), w pierwszej kolejności otrzymujemy informacje o składni tego zapytania do bazy, jaka funkcja ją zainicjowała i który komponent, oraz jak długo trwało samo zapytanie. W tym przypadku inicjatorem jest Core WordPress’a, co utrudnia rozwiązywanie ewentualnego problemu, ponieważ należałoby wtedy wprowadzić odpowiednią optymalizację tabel i wpisów w bazie danych, co bez odpowiednich umiejętności może grozić katastrofą cyfrową w stosunku do Twojej strony.
W danej sytuacji można się pocieszyć faktem, że jest to tylko jedno zapytanie, które trwało całe 0.25 sekundy. Kolejny problem zaczyna się jednak w momencie gdy takich zapytań mamy więcej, wtedy tylko 4 podobnych zapytań i strona jest spowolniona o dodatkową sekundę, co w myśl zdrowej optymalizacji nie powinno mieć miejsca. Jeśli inicjatorem zapytania jest wtyczka, tak samo jak w przypadku błędów bazy danych, można zastanowić się nad jej aktualizacją lub jej wyłączeniem jako łatwe rozwiązanie problemu.
Na koniec, zapytania podzielone ze względu na komponent je wywołujący (Queries by Component). Ta funkcja przyda się nam w momencie gdy wspólny czas wykonania wszystkich zapytań do bazy jest długie, jednak system nie pokazuje nam poszczególnych zapytań w Slow Queries. Przyczyną może być wtedy bardzo duża ilość zapytań z danego komponentu (na przykład wtyczki), które swoją ilością spowalniają cały proces.
3. PHP Errors
Jeśli podczas ładowania się strony wystąpi jakiś problem z wykonaniem się skryptu PHP, otrzymamy o tym informację. Niektóre z tych błędów są bardziej krytyczne (na przykład te krytyczne 😉), inne mniej, jednak zawsze warto się im bliżej przyjrzeć.
Ten poniżej informuje nas o dyrektywie allow_url_include, która w ustawionej dla strony wersji PHP jest już przestarzała. W takim przypadku należy podjąć prace mające na celu aktualizację właściwych elementów strony.
Uwaga: Jeśli chcesz poznać popularne błędy występujące w WordPress’ie i jak sobie z nimi radzić, przeczytaj nasz artykuł Popularne błędy WordPressa i jak je naprawić!
4. HTTP API Calls
Ta funkcja umożliwia nam sprawdzenie zapytań do API i ich odpowiedzi z zewnętrznego serwera. Poniższy przykład pokazuje uruchamianie zapytań do zewnętrznego API w poszukiwaniu nowych aktualizacji dla zainstalowanych komponentów, dzięki temu otrzymujemy informację, że nowa wersja komponentu jest już dostępna i można przejść do jej instalacji.
Szukamy zadań, które długo się wykonują, a przy tym mają długi timeout. Zdarza się, że zewnętrzny serwer API danego komponentu z jakiegoś powodu przestaje być dostępny, link po prostu wygasł, lub producent rozwiązania zwinął interes i zablokował dostępy.
Z doświadczenia mogę powiedzieć, że zdarzały się komponenty które miały ustawione 10 sekundowe timeout’y, osobno dla 3 linków URL, które uruchamiały się po kolei, spowalniając ładowanie strony o 30 sekund!
Opisywany wyżej problem zdarza się znacznie częściej gdy posiadamy wtyczki i motywy spoza oryginalnego repozytorium WordPress’a. Nie otrzymujemy wtedy żadnego komunikatu, który informował by nas o niezaktualizowanym komponencie, na przykład po przejściu do kokpitu strony, klikając następnie w Aktualizacje.
Rozwiązanie, takie jak na przykład wtyczka, może wymagać ręcznej aktualizacji, która zmieni nieaktualne linkowanie dla serwera API. Może być również tak, że dany komponent już dawno jest nie wspierany.
Uwaga: Po wykonanej diagnozie wyłącz wtyczkę Query Monitor, ponieważ ona sama może spowalniać ładowanie się serwisu, a jak wiadomo, każda milisekunda ma znaczenie.
Włączenie ciasteczka uwierzytelniającego
Jeśli chcemy zdiagnozować stronę od strony Gościa, należy ustawić ciasteczko uwierzytelniające. Jest to bardzo proste i nie powinno Ci to sprawić żadnych problemów.
Krok 1.
Z panelu wtyczki, który pojawia się na dole kliknij w koło zębate.
Krok 2.
Kliknij w przycisk Set authenticating cookie
Podsumowanie:
Wtyczka Query Monitor to potężne narzędzie, które skutecznie zdoła Cię nakierować na problem, który trapi Twoją stronę internetową. Jest to podstawowe rozwiązanie, po które sięgam gdy tylko mam dostęp do Panelu Administracyjnego strony i rzadko pozostawia mnie bez żadnej refleksji, dlatego mogę je z czystym sumieniem polecić.