WordPress Heartbeat i żądania Admin-AJAX mogą obciążać PHP oraz bazę danych także przy niewielkim ruchu na stronie. Obciążenie najczęściej pojawia się podczas pracy w kokpicie, edycji wpisów, działania WooCommerce lub wykonywania zadań w tle.
Spis treści
Co robi WordPress Heartbeat
WordPress Heartbeat to wbudowana funkcja WordPressa, która umożliwia komunikację między przeglądarką użytkownika a serwerem. Działa w tle i regularnie przesyła informacje potrzebne do synchronizacji danych. Jest używana między innymi podczas edycji treści w kokpicie WordPressa. Opis działania i sposobów optymalizacji znajdziesz w artykule Heartbeat w WordPressie: Co to jest i jak zoptymalizować?.
Każde działanie w tle wymaga obsługi po stronie serwera. Przy pojedynczej sesji nie musi to oznaczać problemu. Obciążenie może jednak wzrosnąć, gdy jednocześnie pracuje kilku użytkowników, otwartych jest wiele ekranów administracyjnych albo wtyczki wykonują własne żądania w tle.
Dlaczego Admin-AJAX może zajmować PHP i bazę danych
Admin-AJAX to sposób wykonywania żądań WordPressa bez pełnego przeładowania strony. Wtyczka może używać go do pobierania lub zapisywania danych, obsługi panelu, aktualizacji elementów interfejsu albo pracy w tle. Takie żądanie może uruchomić PHP i wykonać zapytania do bazy danych.
Najbardziej obciążający układ występuje wtedy, gdy wtyczka wysyła żądania często, a każde z nich wykonuje rozbudowaną operację. Problem może się nasilić, gdy równocześnie działa Heartbeat, trwa edycja wpisu, a WooCommerce obsługuje sesje użytkowników. Wtedy niewielki ruch na stronie nie pokazuje pełnego obrazu obciążenia. Ważna jest także aktywność w kokpicie i liczba procesów wykonywanych w tle.
Najczęstsze błędy konfiguracji i wtyczek
- Zbyt częste działanie Heartbeat. Funkcja pozostaje aktywna na wielu ekranach, mimo że nie jest tam potrzebna w takim samym zakresie.
- Wtyczka wykonująca powtarzalne żądania Admin-AJAX. Dotyczy to szczególnie dodatków, które stale odświeżają dane lub wykonują operacje w tle.
- Łączenie wielu procesów administracyjnych. Edycja treści, praca kilku osób i działanie dodatków mogą zwiększyć liczbę równoczesnych żądań.
- Wyłączenie Heartbeat bez testu. Może to usunąć część ruchu, ale także przerwać funkcje potrzebne podczas edycji treści i synchronizacji danych.
- Zmiana kilku ustawień naraz. W takiej sytuacji trudno ustalić, która zmiana ograniczyła obciążenie albo spowodowała problem w kokpicie lub WooCommerce.
Jak potwierdzić źródło obciążenia w metrykach hostingu
- Zapisz godzinę, w której pojawia się problem, oraz czynność wykonywaną w WordPressie. Może to być edycja wpisu, praca w kokpicie, obsługa zamówień albo działanie strony sklepu.
- Porównaj metryki PHP, liczbę procesów i obciążenie bazy danych w czasie bezczynności oraz podczas odtworzenia problemu.
- Otwórz kokpit WordPressa i wykonaj tylko jedną czynność, na przykład rozpocznij edycję wpisu. Sprawdź, czy w tym samym czasie rośnie użycie PHP lub liczba procesów.
- Powtórz test po wyłączeniu jednej podejrzanej funkcji lub wtyczki. Zapisz wynik przed kolejną zmianą.
- Jeśli wzrost obciążenia występuje tylko podczas konkretnej czynności, powiąż go z Heartbeat, Admin-AJAX albo funkcją wtyczki uruchamianą w tym miejscu.
Sam wysoki wynik nie wskazuje jeszcze przyczyny. Najważniejsza jest powtarzalna zależność między konkretną aktywnością a wzrostem użycia PHP, procesów lub bazy danych.
Bezpieczne sposoby ograniczenia obciążenia
- Nie wyłączaj globalnie Heartbeat, jeśli korzystasz z funkcji synchronizacji podczas edycji treści. Najpierw ogranicz zakres zmiany do ekranu lub funkcji, na której potwierdzono problem.
- Przed zmianą ustawień wykonaj kopię zapasową i zapisz bieżącą konfigurację. Testuj jedną zmianę naraz.
- Sprawdź, czy problem znika po czasowym wyłączeniu jednej wtyczki odpowiedzialnej za żądania w tle. Po teście przywróć ją, jeśli nie była źródłem obciążenia.
- Przetestuj edycję wpisu, kokpit oraz obsługę WooCommerce po każdej zmianie. Spadek obciążenia nie jest wystarczającym powodem, aby pozostawić ustawienie, które usuwa potrzebną funkcję.
- Jeśli używasz LiteSpeed Cache, konfiguruj tę wtyczkę dopiero po ustaleniu źródła problemu. Wtyczkę można instalować i konfigurować w WordPressie, co opisano w artykule Omówienie LiteSpeed Cache pod WordPress. Cache nie zastępuje diagnozy żądań PHP i Admin-AJAX.
Co zrobić, jeśli problem wraca
Jeżeli obciążenie pojawia się ponownie, porównaj godziny wzrostu z aktywnością w kokpicie, edycją treści i działaniem WooCommerce. Przywróć ostatnią zmianę, która poprzedzała problem, i wykonaj ponowny test. Gdy metryki wskazują na jednoczesne zajęcie PHP, procesów i bazy danych, przekaż do pomocy technicznej zapisane godziny, wykonane czynności oraz wyniki porównania.
Najbezpieczniejsza kolejność to: potwierdzić korelację w metrykach, zmienić jeden element, sprawdzić funkcje WordPressa i dopiero wtedy pozostawić konfigurację. Heartbeat powinien być ograniczany selektywnie, a nie wyłączany bez sprawdzenia jego wpływu na edycję treści.
