PHP procesai
PHP procesai
Siekiant užtikrinti sąžiningą resursų paskirstymą serverio naudotojams, kiekvienam talpinimo planui yra skiriama tam tikras kiekis PHP procesų, kurių kiekvienas gali išnaudoti iki 1 CPU branduolio. Taigi visi serverio naudotojai gali apkrauti serverį proporcingai, netrikdydami kitų serverio naudotojų svetainių darbo.
PHP procesai tai yra serverio resursas, kurio pagalba atliekamos įvairios serverio užduotys. Šios užduotys vykdo skaičiavimus, jungiasi prie duomenų bazės, atlieką laiškų siuntimą iš svetainės ir pan. Kai svetainėje esanti PHP programa pradeda atlieka užduotį, šiam darbui skiriamas vienas PHP procesas. Kad darbą vienu metu galėtų atlikti dvi programos, joms turi būti skirti du procesai ir t.t. Bendro naudojimo serveriuose PHP procesų kiekis yra ribojamas. Suteiktų procesų kiekis skiriasi pagal turimą talpinimo planą. Daugiau informacijos galite rasti mūsų puslapyje:
https://www.serveriai.lt/talpinimas.html
SVARBU! Procesoriaus dalis - tai maksimalus galimas, bet ne garantuojamas procesoriaus resursų kiekis. Talpinant interneto svetainę bendrame serveryje (angl. shared hosting), ji dalinasi bendrus serverio resursus kartu su kitų klientų svetainėmis. Esant poreikiui turėti garantuotus serverio resursus, skirtus tik Jūsų interneto svetainei, rekomenduojame naudoti Profesionalaus hostingo paslaugą - http://pro.hostingas.lt/.
PHP perviršiai
Jei skirto procesų kiekio nepakaks svetainei tenkančiam krūviui atlaikyti, svetainė veiks lėčiau, nes lankytojų užklausos bus vykdomos ne vienu metu, o paeiliui (tokiais atvejais bus fiksuojamas PHP perviršis).
Svetainės veikimo sulėtėjimas priklauso nuo PHP perviršių kiekio:
- iki 100 per dieną - veikimas sulėtėja nežymiai, pasitaiko trumpos pauzės naršant po svetainę (kiek viršijimų - tiek pauzių). Lankytojai dažniausiai sulėtėjimo nepastebi. Informaciją apie PHP viršijimus galima rasti procesoriaus naudojimo ataskaitos puslapyje.
- nuo 100 iki 500 per dieną - pastebimas svetainės darbo sulėtėjimas, trukdantis lankytojams naršyti. Būtina optimizuoti daugiausia CPU naudojančias svetainės dalis. Informacija apie PHP procesų limito viršijimus rodoma klientų sistemoje, DirectAdmin valdymo pulte, taip pat siunčiama el. paštu.
- nuo 500 iki 1000 per dieną - serveris užklausas aptarnauja su dideliu uždelsimu arba išvis nespėja aptarnauti. Svetainę naršyti sunku, tačiau dar įmanoma.
- virš 1000 per dieną - serveris nebespėja vykdyti daugumos užklausų, lankytojams atrodo, kad svetainė „užlūžusi“.
Procesų limitas neįtakoja statinio turinio (HTML puslapiai, paveikslėliai) pateikimo greičio - toks turinys visada pateikiamas maksimaliu greičiu.
Kaip užtikrinti patikimą svetainės veikimą viršijus PHP procesų limitą?
- Optimizavus svetainės PHP kodą, vienai užklausai įvykdyti prireiks mažiau CPU resursų. Taigi serveris galės aptarnauti daugiau užklausų. Ką optimizuoti Jums patars procesoriaus resursų naudojimo ataskaita. Taip pat galima pakeisti dalį dinaminių PHP puslapių į statinius HTML, kuriems netaikomi PHP procesų limitai.
- Itin didelio lankytojų srauto sulaukiančių svetainių, taip pat intensyvius skaičiavimus atliekančių sistemų veikimui gali prireikti atskiro serverio.
Pastaba: Jei pageidaujate patikrinti kuri svetainės dalis išnaudoja daugiausiai PHP procesų ar kaip išvalyti perviršių skaitliuką, tai rasite paspaudę čia.
PHP proceso įvykdymo laikas
PHP procesas turi nustatytą laiko limitą per kurį turi būti įvykdomas t.y. laiko limitas, kurio metu vykdoma užklausa. Bendro naudojimo serverių planuose šis limitas yra 300 sekundžių (5 minutės). Jeigu per šį laikotarpį nėra įvykdomas procesas, tokiu atveju serverio klaidų išraše matomos klaidos su nurodymu, kad procesas nebuvo įvykdytas per nurodytą laiką. Detalesnę informaciją, kaip patikrinti serverio klaidų išrašus rasite paspaudę čia.
Kaip nustatyti, kuri svetainės dalis/failas sukelia per ilgai vykstančius procesus?
- Jeigu serverio Apache klaidų išraše matote pranešimą:
[Mon Feb 27 08:32:15.006529 2017] [fastcgi:error] [pid 19507] [client 194.XXX.87.131:60098] FastCGI: incomplete headers (0 bytes) received from server "/usr/local/fastcgi/cgi-bin/php-cgi" aborted: (first read) idle timeout (300 sec), referer: http://www.domenas.lt/wp-content/failas.php
- Tai reiškia, kad svetainėje buvo fiksuotas neįvykdytas procesas, kuris truko ilgiau nei 300 sekundžių ir buvo nutrauktas iš serverio pusės. Klaidos pabaigoje nurodoma tiksli nuoroda į svetainės failą, kuris atliko šią užduotį. Tai reiškia, kad per ilgai trunkanti užduotis buvo vykdoma šio failo ir reikėtų peržiūrėti šio failo programinį kodą bei pašalinti problemos priežastį.
- Papildomą informaciją (kokio tipo užklausa bei kada buvo vykdoma) galite matyti ir Apache žurnale. Konkrečiai šiuo atveju buvo fiksuojamas įrašas:
194.XXX.87.131 - - [27/Feb/2017:08:27:13 +0200] "POST /failas.php HTTP/1.1" 500 531 "http://www.domenas.lt/wp-content/failas.php" "WordPress/4.7.2; http://www.domenas.lt"
Fiksuojami neįvykdyti procesai gali sulėtinti arba iš viso sustabdyti svetainės darbą. Norint išvengti šių klaidų reikia optimizuoti svetainės PHP kodą arba keisti dalį svetainės dinaminių PHP puslapių į statinius. Šiuos darbus turėtų atlikti Jūsų svetainės kūrėjas/programuotojas.
SVARBU! Didelis kiekis per ilgai trunkančių procesų daro įtaką serverio darbui, sulėtina kitų klientų svetaines esančias tame pačiame serveryje, todėl pastebėjus šią veikslą iš mūsų pusės yra fiksuojami sutarties sąlygų pažeidimai apribojant paslaugą. Platesnę informaciją apie sutarties sąlygų pažeidimus galite rasti paspaudę čia.