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.
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).
Zobaczysz interfejs z opcjami:
- Start tracking session — rozpocznij profilowanie
- Reports — wyniki poprzednich sesji
- Settings — opcje (treshold, max requests)
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_Queryw 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:
- X-Ray — które URL są wolne
- 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ł?

