Analiza počasnih strani PHP z orodjem X-Ray App v cPanelu

cPanel Branje: 8 min

Če se stran nalaga počasi, je najtežje vprašanje običajno, kaj točno jo upočasnjuje: vtičnik, slabo napisana poizvedba v podatkovni bazi, zunanja storitev, na katero stran čaka, ali pa so preprosto pošli viri gostovanja. Na gostovanju cPanel in gostovanju WordPress na to vprašanje odgovori orodje CloudLinux X-Ray App.

X-Ray je sledilnik PHP (profiler): pri zahtevah na navedeni naslov zabeleži, koliko časa je PHP delal in koliko od tega je odpadlo na posamezne vtičnike WordPress, poizvedbe v podatkovni bazi in funkcije PHP. Zanj ti ni treba namestiti vtičnika ali spreminjati kode, in ni uporaben le za WordPress: sledi lahko kateri koli spletni strani na osnovi PHP (Joomla, Drupal, PrestaShop, Laravel, lasten razvoj). Razčlenitev po vtičnikih je na voljo le pri WordPressu.

Kje ga najdeš?

Prijavi se v cPanel in v skupini Programska oprema klikni ikono X-Ray App.

Skupina Programska oprema v cPanelu: točka menija X-Ray App

Na strani PHP X-Ray, ki se odpre, vidiš prejšnje naloge sledenja. Dokler nisi zagnal nobene, je namesto seznama napis NI NAJDENIH NALOG.

Zagon sledenja

  1. Klikni gumb Zaženi sledenje zgoraj desno.
  2. V vrstici URL na seznamu Izberi domeno izberi domeno. Na seznamu so domene in poddomene tvojega računa cPanel.
  3. Ob njem v polje Vnesi masko vpiši, katerim naslovom znotraj domene naj sistem sledi:
    • * celotno spletno mesto, vsi naslovi;
    • / le začetna stran;
    • termekek/* vse strani pod /termekek/;
    • *kosar* vsak naslov, ki vsebuje besedo „kosar” (vključno s parametri za ?).

    Poševnico za domeno vmesnik sam postavi pred masko. ? nadomesti natanko en znak, [ ] pa enega od znakov, naštetih v oklepaju (na primer oldal[1-3].php). Povezava Kako uporabljati posebne znake? možnosti prikazuje s primeri. Ista maska velja za naslove http:// in https://.

  4. Privzeto X-Ray zabeleži prvih 20 zahtev na navedene naslove (Trajanje beleženja: Zahteva, 20). Če ti to ustreza, klikni gumb Zaženi.

Okno Zaženi sledenje v X-Ray: domena, maska, Napredne nastavitve, IP odjemalca in trajanje beleženja

Napredne nastavitve

Z vklopom potrditvenega polja Napredne nastavitve dobiš dve dodatni možnosti:

  • IP odjemalca: sistem zabeleži le zahteve s tega naslova IPv4. Privzeta vrednost je *, torej zahteve vseh obiskovalcev. Na produkcijskem, prometnem spletnem mestu je vredno vnesti svoj naslov IP: tako pridejo na seznam le zahteve, ki jih sprožiš ti iz svojega brskalnika, naslovi obiskovalcev in URL-ji, ki jih odprejo, pa se ne beležijo. Svoj javni naslov IP izveš na primer z iskanjem „kakšen je moj IP”. Če je spletno mesto za Cloudflarom ali drugim posredniškim strežnikom, lahko strežnik vidi drug naslov; če z navedenim naslovom IP zahteve ne prihajajo, pusti polje na vrednosti *.
  • Trajanje beleženja: ob Zahteva lahko navedeš, koliko zahtev naj sistem zbere, z izbiro Obdobje pa, koliko časa (Dnevi, Ure, Minute). Obdobje je lahko najmanj 1 minuta in največ 2 dni.

Hkrati lahko teče eno sledenje. Če naloga še teče in bi zagnal novo, vmesnik vrne sporočilo o napaki „Limit of running tasks is 1. You already have 1 running task”: počakaj, da se tekoča naloga konča, ali jo ustavi.

Odpiranje spletnega mesta med sledenjem

Sledenje beleži le prave zahteve, zato po zagonu naloge v brskalniku odpri preiskovane strani (ali počakaj, da jih odprejo obiskovalci). Pri počasni košarici ali blagajni opravi počasno operacijo, pri počasnem skrbniškem vmesniku pa preklikaj počasne skrbniške strani.

Pomembno: X-Ray vidi le, kar izvaja PHP. Če stran streže predpomnilnik (vtičnik za predpomnjenje WordPress, na primer WP Super Cache ali W3 Total Cache, oziroma predpomnilnik Cloudflare), se PHP sploh ne zažene in zahteva se ne prikaže. Takrat predpomnilnik začasno izklopi ali se prijavi v skrbniški vmesnik WordPress (večina predpomnilnikov prijavljenim uporabnikom ne streže shranjene strani). Slike, datoteke CSS in JavaScript streže spletni strežnik neposredno, zato tudi te niso v sledenju.

Seznam nalog sledenja

Na seznamu nalog vidiš naslednje:

  • URL: domena in maska, na katero se naloga nanaša.
  • Stanje sledenja: Teče (pod tem, koliko zahtev še manjka, na primer „5 times left”), Končano (zbralo se je zahtevano število zahtev ali se je obdobje izteklo) ali Ustavljeno.
  • IP odjemalca: navedeni naslov IP oziroma *.
  • Zbrane zahteve: število doslej zabeleženih zahtev.
  • Poteče: toliko časa so podatki naloge še na voljo. Strežnik naloge hrani 30 dni od ustvarjanja, nato jih izbriše.
  • Dejanja: ikona očesa odpre zabeležene zahteve, ikona kvadrata ustavi tekočo nalogo (potrditev: Da, ustavi), ikona trikotnika nadaljuje ustavljeno nalogo, ikona koša pa izbriše nalogo in vse njene podatke (potrditev: Da, izbriši).

Naloge sledenja X-Ray: tekoča in končana naloga s stanjema Teče in Končano

Seznam se ne osveži sam: klikni gumb Osveži ali vklopi stikalo Samodejna osvežitev.

Zabeležene zahteve

S klikom na ikono očesa se odpre stran Zabeležene seje naloge. Zgoraj vidiš tri številke:

  • Skupaj: vse zabeležene zahteve.
  • V čakanju: že zabeležene zahteve, ki so še v obdelavi. Te se v tabeli prikažejo čez nekaj sekund ali minut.
  • Počasne: zahteve, ki trajajo dlje od 1 sekunde.

Tabela privzeto kaže le počasne zahteve (to označuje filter Počasne pod iskalnikom), od najpočasnejše naprej. Če počasnih zahtev ni bilo, se prikaže napis „Počasnih zahtev ni zaznanih!”; z gumbom Prikaži vse zahteve si lahko tudi takrat ogledaš hitre zahteve. S seznamom Zahteve spremeniš filter, s poljem Išči URL pa lahko iščeš določen naslov.

Zabeležene seje X-Ray: pet počasnih zahtev z URL-jem, naslovom IP odjemalca, časom začetka in trajanjem

Podrobnosti zahteve

S klikom na vrstico se odpre podrobna analiza zahteve. S puščicama zgoraj desno se premakneš na naslednjo in prejšnjo zahtevo, z gumbom Prenesi kot PDF pa lahko pripraviš poročilo, ki ga lahko pošlješ svojemu razvijalcu ali naši podpori.

Analiza zahteve X-Ray: Top 3 težave, čas izvajanja vtičnikov in poizvedb v podatkovni bazi

  • Top 3 težave: trije najpočasnejši elementi zahteve, z vrsto (Module/Plugin: vtičnik, Database query: poizvedba v podatkovni bazi, System function: funkcija PHP). Če pogledaš le eno tabelo, poglej to.
  • Najboljši programski moduli/vtičniki po času izvajanja: čas izvajanja vtičnikov WordPress. Na spletnih mestih, ki jih upravlja WP Toolkit, se pojavi tudi wp-toolkit: to je lasten modul WP Toolkit, nameščen ob WordPressu, njegov čas izvajanja je običajno zanemarljiv.
  • Najboljše poizvedbe v podatkovni bazi po času izvajanja: poizvedbe SQL, z datoteko in vrstico, od koder so se začele (Datoteka), vtičnikom, ki mu pripadajo (Programski modul), in tem, kolikokrat se je ista poizvedba izvedla (Klici).
  • Druge sistemske funkcije: najpočasnejše funkcije PHP, prav tako z datoteko in vrstico. curl_exec je zunanja zahteva HTTP (na primer klic API-ja, licenčnega strežnika ali iskalnika posodobitev): pri tem je stran čakala na odgovor drugega strežnika.

S klikom na puščico na začetku vrstic se skrajšana pot datoteke prikaže v celotni dolžini.

Druge sistemske funkcije X-Ray: funkciji usleep in curl_exec z datoteko in trajanjem

Stolpec Trajanje (%) kaže, koliko odstotkov celotnega časa zahteve je porabil element; v oklepaju je točen čas. Odstotki se prekrivajo, zato se ne seštejejo v 100 %: čas vtičnika vključuje tudi čas poizvedb in funkcij, ki jih je sprožil. V zgornjem primeru je testni vtičnik, namenoma napisan počasno (kb-xray-teszt), porabil 92,6 % zahteve, od tega počasna poizvedba 60 %, klic usleep pa 27 %.

Kaj narediti z rezultatom?

  • Vtičnik porabi večino časa: posodobi ga na najnovejšo različico, preglej njegove nastavitve (veliko vtičnikov ob vsakem nalaganju strani zbira statistiko, kliče zunanjo storitev ali beleži) in ga, če ga ne potrebuješ, izklopi. O upravljanju vtičnikov govori članek o upravljanju vtičnikov v WP Toolkit. Preden začneš preklapljati na produkcijski strani, poskusi na kopiji staging.
  • Poizvedba v podatkovni bazi je počasna: vzrok je pogosto napihnjena tabela. Pri WordPressu poglej samodejno nalagane podatke tabele wp_options in tabelo wp_postmeta.
  • Ista poizvedba se izvede velikokrat (visoka vrednost Klici): to je običajno napaka vtičnika ali predloge, ki seznam nalaga po elementih, z ločenimi poizvedbami. Sporoči jo razvijalcu vtičnika ali predloge; poročilo PDF je za to dobro izhodišče.
  • curl_exec je počasen: stran čaka na zunanji strežnik. Iz stolpca Datoteka ugotovi, kateri vtičnik sproži zahtevo; če pride tudi do prekoračitve časa, pomaga članek o napakah cURL error 28 in 60.
  • Zahtevo je upočasnila omejitev virov: če je račun med zahtevo dosegel omejitev porabe procesorja ali diska (IO), X-Ray to posebej označi pri zahtevi. Takrat ni počasna koda, temveč je sistem zahtevo zadržal. Poglej porabo virov računa, in če je redno na omejitvi, je vredno preiti na večji paket (glej tudi: napaka 508 Resource Limit Is Reached).
  • Vse zahteve so hitre, stran pa je vseeno počasna: počasnost ni v PHP, temveč v brskalniku (velike slike, veliko JavaScripta, zunanje pisave in skripti). To pokaže PageSpeed Insights; zamisli dajeta članek o pospešitvi WordPressa in članek o zmogljivosti gostovanja cPanel. Pogoste vzroke za upočasnitev WordPressa zbira naš blogovski zapis.

Dobro je vedeti

  • X-Ray je del operacijskega sistema CloudLinux. Na strežnikih namenski cPanel privzeto ne teče CloudLinux, zato tam X-Ray App ni na voljo.
  • Sledenje med izvajanjem samo nekoliko upočasnjuje: po meritvah CloudLinux se čas nalaganja strani poveča za 5–10 %. Zato X-Ray ni namenjen stalnemu spremljanju, temveč iskanju vzroka konkretne počasnosti. Naloga se po zahtevanem številu zahtev ali obdobju ustavi sama, in dokler ne teče, ne porablja virov.
  • Dokler naloga teče, je funkcija JIT v PHP OPcache na tem spletnem mestu izklopljena; po koncu naloge se znova vklopi.
  • Zabeleženi podatki (URL-ji, naslovi IP, poizvedbe SQL) so na voljo 30 dni, nato se samodejno izbrišejo. Če jih želiš odstraniti prej, izbriši nalogo.
  • V uporabniškem vmesniku ni mogoče zagnati neprekinjenega sledenja, ki bi pošiljalo dnevna poročila. Če bi bilo treba občasno počasnost spremljati dlje časa, nam piši in pomagali bomo.
  • Če te pri iskanju napak zanimajo tudi sporočila o napakah PHP, vklopi način za odpravljanje napak WordPress.
Nazaj: cPanel – članki (48)