Šta su PHP worker-i i kako da ih optimizujete?
Kada je potrebno da odaberete odgovarajući hosting plan za svoj WordPress web sajt, važno je da znate na šta sve da obratite pažnju.
Logično je da će e-commerce sajt koji ima 50.000 posetilaca mesečno zahtevati mnogo više serverskih resursa nego jednostavan blog sajt sa istim brojem posetilaca. Ovo je prosto zato što su e-commerce sajtovi uglavnom dinamički i zahtevaju više resursa za PHP i upite ka bazi.
Tu na scenu stupaju PHP worker-i.
U ovom tekstu ćemo objasniti šta su PHP worker-i i kako da optimizujete procesiranje zahteva na vašem sajtu. S obzirom da je WordPress najzastupljeniji CMS i da je razvijen na PHP-u, primeri koje navodimo u tekstu se odnose upravo na WordPress. Naravno, PHP worker-i mogu biti primenjeni i na bilo koju drugu aplikaciju razvijenu na PHP-u.
Šta je PHP worker?
Na WordPress sajtovima PHP worker-i grade stranice i procesiraju zakazane pozadinske zadatke. S obzirom da su PHP worker-i direktno zaduženi i za generisanje HTML stranica, oni određuju i koliko simultanih nekeširanih zahteva vaš sajt može da izdrži u bilo koje vreme.
Recimo da je vaš WordPress sajt opremljen sa dva PHP worker-a i nema podešeno keširanje stranica. Ukoliko do vašeg sajta dođu četiri zahteva istovremeno, dva od njih će biti odmah procesirana, dok će druga dva morati da sačekaju u redu dok se prva dva ne procesiraju.
Kako WordPress koristi PHP worker-e?
Pre nego što se pozabavimo optimizacijom PHP worker-a, hajde prvo da vidimo kako WordPress koristi PHP worker-e.
Tipičan zahtev u nekeširanom okruženju izgleda otprilike ovako:
1.Web server (Nginx ili Apache) prima zahtev od posetioca sajta
2. On prosleđuje zahtev PHP-u
3. PHP šalje upite ka MySQL bazi podataka i koristi PHP template-ove vaše WordPress teme da generiše HTML stranicu
4. PHP šalje renderovanu HTML stranicu nazad ka web serveru
5. Stranica se prikazuje posetiocu
U opisanom procesu, korak 3 je najzahtevniji po pitanju CPU i RAM resursa. Ukoliko imate dobro optimizovan web sajt, sa minimalnim brojem upita ka bazi i efikasnim PHP kodom, ovaj korak će trajati veoma kratko.
Sa druge strane, ukoliko vaš sajt ima loše napisan PHP kod, koji pravi veliki broj upita ka bazi, biće mu potrebno mnogo više vremena da prođe ovaj korak.
Koji je odnos između PHP worker-a i CPU-a?
Kada su u pitanju performanse WordPress sajta, važno je da dobro razumete odnos između PHP worker-a i CPU-a.
Ukoliko je vašem web sajtu potrebno više CPU resursa, povećanje PHP worker-a neće poboljšati njegove performanse. Samo će omogućiti vašem sajtu da procesira više zahteva istovremeno, ali će ti zahtevi i dalje biti procesirani sporije nego što bi to bio slučaj sa većim CPU resursima.
Kako da optimizujete upotrebu PHP worker-a na vašem web sajtu?
Već smo pomenuli da su PHP worker-i pozadinski procesi koji generišu HTML stranice sa PHP kodom. Najlogičniji način da smanjite i optimizujete upotrebu PHP worker-a je da smanjite količinu CPU i PHP zahteva potrebnih za procesiranje zahteva na vašem sajtu.
Podesite keširanje za vaš WordPress web sajt
Prvi korak u smanjenju upotrebe PHP worker-a je podešavanje keširanja za vaš WordPress sajt. Podrazumevano, WordPress je dinamički CMS koji na zahtev generiše svaku stranicu.
Za najveći broj blog i prezentacionih sajtova, nepotrebno je koristiti PHP za dinamičko generisanje zahteva.
Svaki blog post je dizajniran da bude statičan, pa za njegovo prikazivanje nema potrebe koristiti mnogo CPU resursa. Umesto toga je bolje da PHP generiše stranicu samo jednom, a da je onda keširate. Keširanje stranica ima mnogo prednosti u odnosu na dinamičko generisanje stranica putem PHP-a.
Zamislite da post na vašem blogu postane viralan i da za kratko vreme dobije 100.000 pregleda. Bez keširanja stranica vaši PHP worker-i bi brzo poslati preopterećeni, što bi moglo da rezultira padom vašeg web servera.
Ukoliko biste odlučili da primenite keširanje, samo prvi pregled vašeg posta bi bio dinamički generisan. Ostalih 99.999 zahteva bi bilo posluženo iz keša vaše stranice. Na taj način bi vaš sajt morao da koristi vrlo malo CPU resursa i ne bi bilo potrebe za većim angažovanjem PHP worker-a.
Optimizujte svoj PHP kod
Još jedna dobra strategija osim keširanja je da optimizujete svoj PHP kod. Kada govorimo o WordPress-u, optimizacija PHP koda može da znači više različitih stvari. Zato hajde da se detaljnije pozabavimo ovom temom
Jedna od najkorisnijih osobina WordPress-a je njegova fleksibilnost u pogledu proširenja funkcionalnosti. Proširenje WordPress core fajlova je postalo toliko uobičajeno, da se često gotovo podrazumeva da za čak i neke jednostavne funkcionalnosti instaliramo plugin. Obično nije problem kada je to mali broj plugin-a, ali često, vremenom, taj broj naraste do te mere da to počne negativno da utiče na performanse tog sajta.
Iz tog razloga je prvi korak u optimizaciji PHP koda na vašem sajtu da uradite reviziju postojećeg koda i proverite da li su vam zaista potrebni svi ti plugin-i koje ste instalirali na vašem web sajtu.
Birajte kvalitetne plugin-e
Broj plugin-a na vašem WordPress sajtu nije toliko važan koliko je važan njihov kvalitet. Ako plugin nije ažuriran u poslednjih šest meseci, preporučujemo da izaberete neki drugi koji odgovara vašim potrebama.Razlog za ovo je taj što se WordPress stalno unapređuje. Ako plugin nije ažuriran godinama, velika je verovatnoća da njegov kod ne koristi najnovije razvojne i sigurnosne standarde WordPress-a.
S druge strane, ako se plugin redovno ažurira svakih nekoliko nedelja, velika je verovatnoća da je njegov developer ozbiljan po pitanju kvaliteta koda, što ga čini dobrim izborom za vaš WordPress sajt.
Koristite plugin-e samo kada je to zaista potrebno
Ako želite da obavite jednostavan zadatak na svom sajtu kao što je dodavanje JavaScript ili CSS koda, za tako nešto ne morate da koristite plugin. Dovoljno je da direktno upišete kod u PHP template vaše teme ili u style.css fajl pomoću child theme.
Sledeći put kada pomislite da instalirate plugin, prvo razmislite da li vam je to zaista neophodno. Ponekad nema načina da izbegnete instaliranje još jednog plugin-a, i to je u redu. Ipak, ponekad to nije neophodno, pa je dobro znati da neke jednostavnije funkcionalnosti možete postići i bez instalacije plugin-a.
Birajte lakše WordPress teme
Kao što verovatno već znate, WordPress teme često mogu da prouzrokuju loše performanse PHP koda. Razlog tome je uglavnom što neki developeri prave glomazne teme sa mnogo koda, kako bi obezbedili mnogo različitih funkcionalnosti unutar teme.
Ovo nažalost često dovodi do toga da neke teme imaju dosta upita ka bazi podataka što prouzrokuje lošije performanse web sajta koji koristi tu WordPress temu.
Izaberite dobar hosting paket
Hosting paket može da napravi razliku u performansama web sajta. Ova razlika nekad ne mora biti mnogo primetna, ali u nekim slučajevima odabir kvalitetnog hosting paketa i dobro optimizovanog PHP koda može dosta da utiče na performanse vašeg web sajta. Imajući u vidu da je efikasnost PHP worker-a u direktnoj vezi sa CPU-om i RAM-om, hostovanje vašeg web sajta na kvalitetnim hosting paketima može da pomogne u optimizaciji upotrebe PHP worker-a.
Posledice koje može da prozrokuje nedostatak PHP worker-a
Da biste postigli brzinu i pouzdanost vašeg WordPress web sajta, važno je da se pobrinete da on ima dovoljno PHP worker-a. Ukoliko su PHP worker-i već zauzeti na sajtu, oni počinju da stvaraju red. Onog momenta kada dostignete limit u PHP worker-ima, red počinje da gura napolje starije zahteve, što može da rezultira greškom 504, odnosno nepotpunim zahtevom.
Još jedna greška na koju često nailazimo, a koja nastaje kao posledica nedostatka PHP worker-a je greška 502 (bad gateway). Ova greška je nešto drugačija od greške 504 jer se dešava nakon isteka perioda od 60 sekundi u PHP worker redu.
Ne moramo da naglasimo koliko je ova greška loša ne samo za korisničko iskustvo posetilaca, već i za SEO skor vašeg web sajta.
Postoje i neki drugi faktori koji mogu da dovedu do sporog učitavanja ili grešaka na vašem sajtu. Na primer, ukoliko je nekeširanom zahtevu potrebno dosta podataka iz baze, može da prođe 20-30 sekundi dok se taj zahtev ne izvrši.
U toj situaciji PHP worker-i će biti zauzet najmanje pola minute. Ukoliko vaš sajt ima samo dva PHP worker-a, samo nekoliko takvih zahteva može prouzrokovati greške na vašem sajtu.
Da biste to rešili, potrebno je da optimizujete MySQL bazu i povećate broj PHP worker-a. Povećanjem CPU resursa naravno dobijate još bolji efekat.
Kako da procenite optimalan broj PHP worker-a?
Da biste procenili broj potrebnih PHP worker-a za vašu aplikaciju, trebalo bi da razmotrite nekoliko faktora:
- Vrsta aplikacije: Da li je vaša aplikacija visoko opterećena ili ima promenljivo opterećenje? Na primer, da li obrađuje veliki broj zahteva istovremeno ili ima sporadične nalete opterećenja
- Resursi po zahtevu: Koliko resursa (CPU, RAM) svaki PHP worker zahteva? Ovo može zavisiti od kompleksnosti vašeg koda, korišćenih biblioteka i framework-a.
- Opterećenje servera: Koliko servera imate? Koliko je fizičkih ili virtualnih procesora na tim serverima?
- Opterećenje baze podataka: Ako aplikacija zavisi od baze podataka, potrebno je razmotriti i opterećenje baze podataka jer to može uticati na performanse PHP worker-a.
- Monitoring performansi: Praćenje resursa kao što su CPU, RAM i vreme odziva može vam pomoći da shvatite koliko worker-a vaša aplikacija zahteva u različitim situacijama.
Opšti pristup je da eksperimentišete sa brojem PHP worker-a kako biste našli optimalan broj za vašu specifičnu aplikaciju. Počnite sa manjim brojem i postepeno povećavajte broj ako primećujete da postoje probleme sa performansama ili da worker-i često čekaju na resurse.
Zaključak
Kao što ste videli, odabir odgovarajućeg hosting plana za WordPress sajt zavisi od razumevanja potreba vaše aplikacije, posebno u vezi sa PHP worker-ima. Oni su ključni za efikasno procesiranje zahteva na sajtu, što direktno utiče na njegove performanse.
Optimizacija PHP koda, uključujući smanjenje upita ka bazi i efikasno keširanje stranica, može značajno poboljšati efikasnost korišćenja PHP worker-a.
Na kraju, važno je da pratite opterećenje servera i baze podataka kako biste prilagodili broj PHP worker-a i osigurali optimalne performanse vašeg WordPress sajta.
Bez komentara