PHP procesai

Iš IV pagalba klientams.
(Nukreipta iš PHP perviršiai)
Peršokti į: navigacija, paiešką

PHP procesai

Siekiant užtikrinti sąžiningą resursų paskirstymą visiems serverio naudotojams, kiekvienam talpinimo planui yra skiriamas 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 - serverio resursas, kurio pagalba atliekamos įvairios serverio užduotys. Šios užduotys vykdo skaičiavimus, jungiasi prie duomenų bazės, atlieka laiškų siuntimą iš svetainės ir pan. Kai svetainėje esanti PHP programa pradeda 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. Procesų kiekis suteikiamas pagal pasirinktą 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 svetainės talpinimo planui skirto procesų kiekio nepakaks tenkančiam krūviui apdoroti, 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 tiesiog 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ų. 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ą, daugiau informacijos rasite paspaudę čia.


PHP proceso įvykdymo laikas

PHP procesas turi nustatytą laiko limitą, per kurį turi būti įvykdomas t.y. laikotarpis, kurio metu vykdoma užklausa. Bendro naudojimo serverių (Serveriai.lt) planuose šis limitas yra 300 sekundžių (5-ios minutės). Jeigu per šį laikotarpį nėra įvykdomas, užbaigiamas PHP procesas, tokiu atveju serverio klaidų išraše matomos klaidos su nurodymu, kad procesas nebuvo įvykdytas per nurodytą laiką ir nutrauktas iš serverio pusės. 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?

  • 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
  • Tokio pobūdžio apache klaidos nurodo, 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į. Šiuos darbus turėtų atlikti Jūsų svetainės kūrėjas/programuotojas.
  • 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"

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. Dėl šių darbų kreipkitės į svetainės kūrėjus/programuotojus.

SVARBU! Didelis kiekis per ilgai trunkančių procesų daro įtaką serverio darbui. Tai gali sulėtinti 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 ir apribojamas paslaugos tiekimas. Platesnę informaciją apie sutarties sąlygų pažeidimus galite rasti paspaudę čia.