ZARZąDZANIE HOSTINGIEM (DIRECTADMIN) • 4 MIN READ

X-Ray — profilowanie PHP

X-Ray to narzędzie CloudLinux do profilowania PHP — pokazuje wolne strony, slow queries do bazy, wąskie gardła w kodzie. Jak włączyć w DA i interpretować raporty.

Zespół IQHost 14 maj 2026 4m read
#DirectAdmin #IQHost #hosting

X-Ray to wbudowany w CloudLinux profiler PHP. Włączasz go w DA, klikasz „start session" — przez X minut X-Ray zbiera dane o każdym requeście PHP na Twoim koncie. Po zakończeniu raport pokazuje:

  • Które strony są najwolniejsze
  • Które zapytania do bazy zajmują najwięcej czasu
  • Funkcje PHP używające najwięcej CPU/pamięci
  • Skąd przychodzą requesty (URL, IP)

Niezastąpione do debugowania wolnej strony.

Co zyskasz

  • Włączysz X-Ray i zrobisz sesję profilowania.
  • Zidentyfikujesz wąskie gardła (slow queries, slow PHP, wolne pluginy).
  • Zoptymalizujesz stronę bazując na raporcie.

Wymagania wstępne

  • Konto IQHost z X-Ray w pakiecie (większość HS5+ ma).

Wskazówka

X-Ray vs alternatywy:

  • X-Ray — built-in CloudLinux, dla całego konta
  • Query Monitor (WP plugin) — szczegółowy, tylko dla WordPress
  • New Relic / Datadog — enterprise, drogie
  • Xdebug — dev only, lokalny development

W IQHost X-Ray = darmowe i wbudowane.

Krok 1: Otwórz X-Ray

Dodatkowe funkcje → X-Ray (lub URL: /CMD_PLUGINS/cl-xray).

Strona X-Ray w DA

Zobaczysz interfejs z opcjami:

  • Start tracking session — rozpocznij profilowanie
  • Reports — wyniki poprzednich sesji
  • Settings — opcje (treshold, max requests) Pełen widok X-Ray Profiler — lista requestów i metryki

Krok 2: Skonfiguruj sesję

Klik Start tracking session:

  • URL — opcjonalnie, konkretna strona do profilowania (np. mojafirma.pl/sklep)
  • Duration — czas trwania (15 min, 1h, 24h)
  • Treshold — min. czas (s) requestu który ma być rejestrowany (zwykle 0.5s = pokazuje wolne)

Klik Start. X-Ray zaczyna zbierać dane.

Krok 3: Generuj ruch

Aby X-Ray miał co analizować, klikaj po stronie lub poczekaj na zwykły ruch (jeśli masz odwiedzających).

Każdy request PHP > treshold zostanie zarejestrowany ze stack trace.

Krok 4: Zatrzymaj sesję i sprawdź raport

Stop tracking → przejdź do Reports → kliknij na ostatnią sesję.

Raport pokazuje:

  • Lista requestów posortowana po czasie
  • Per request: URL, czas, PHP function tree
  • Slow MySQL queries osobno
  • Memory usage per request

Sortuj po:

  • Time (najwolniejsze najpierw)
  • MySQL time (najwięcej w bazie)
  • PHP time (najwięcej w kodzie)
  • Memory (najwięcej RAM)

Krok 5: Interpretacja

Najczęstsze findings:

Slow MySQL query

SELECT * FROM wp_options WHERE option_name LIKE '%_transient_%'
Time: 2.5s

→ Problem: WordPress transients. Solution: clean expired transients, użyj Redis cache.

Slow plugin function

some_plugin_init() → 1.8s

→ Plugin wolny. Sprawdź czy najnowsza wersja. Może wyłącz albo zastąp alternatywą.

High memory

Request: /sklep/produkty
Memory peak: 512MB

→ Strona ładuje za dużo. Pagination, lazy load, query optimization.

N+1 queries

50 queries: SELECT * FROM wp_postmeta WHERE post_id = X

→ Plugin/temat wykonuje query w pętli zamiast JOIN. Sprawdź WP_Query w kodzie.

Typowe wąskie gardła i fixy

WordPress

Problem Fix
Slow wp_options queries Wyczyść transients, dodaj index
WP_Query w pętli Użyj get_posts() z 'no_found_rows' => true
Wolny plugin Sprawdź updates, alternatives
Duże media bez optymalizacji WebP, lazy load, CDN

WooCommerce

Problem Fix
Slow wp_postmeta (orders) Index na meta_key + post_id
Cron jobs przeciągające Disable WP-Cron, użyj real cron
Background jobs (Action Scheduler) Cleanup co tydzień

Laravel / app

Problem Fix
N+1 Eloquent queries with() eager loading
Brak cache Implement Cache::remember()
Slow API external Cache responses, async queue

Najczęstsze problemy

1. „X-Ray pokazuje 0 requestów"

  • Treshold za wysoki — obniż do 0.1s
  • Brak ruchu — odśwież stronę ręcznie
  • Sesja jeszcze nie skończona

2. „Raport pokazuje funkcje WordPressa, nie wiem co z tym"

WordPress jest hierarchiczny — do_action('init') → wiele pluginów. Sprawdź stack trace: który plugin / motyw wywołuje tę funkcję.

3. „Sesja zakończyła się przed czasem"

X-Ray ma limit requestów per sesja (zwykle 1000). Po przekroczeniu — auto-stop.

4. „Mogę X-Ray w nocy?"

Tak — ustaw duration na 8h, X-Ray będzie zbierał całą noc. Rano przejrzysz raport.

5. „Strona po X-Ray jest wolniejsza"

X-Ray sam dodaje overhead (~10-15%). Włączaj tylko na czas profilowania, potem wyłącz.

6. „X-Ray nie dostępny w moim pakiecie"

HS1 może nie mieć. Sprawdź w panelu klienta szczegóły pakietu. Alternatywa: Query Monitor w WordPress.

7. „Raport za długi — nie wiem od czego zacząć"

Sortuj po Time → 10 najwolniejszych requestów. Skup się na nich. Często 80% problemów to 20% requestów (Pareto).

X-Ray + Query Monitor (WP)

Dla głębszej analizy WordPress kombinacja:

  1. X-Ray — które URL są wolne
  2. Query Monitor (WP plugin) — pokazuje WHY (slow queries, slow hooks, slow PHP)

Razem precyzyjnie zlokalizujesz problem.

Słowniczek

  • Profiler — narzędzie mierzące czas/pamięć w kodzie.
  • Stack trace — sekwencja wywołań funkcji do błędu/wąskiego gardła.
  • N+1 queries — antywzorzec: zapytanie w pętli zamiast JOIN.
  • Transient — WordPress cache w wp_options (tymczasowy).
  • Treshold — próg powyżej którego request jest profilowany.

Related

Feedback

Czy ten artykuł pomógł?

Potwierdź