Eto PHP-FPM: lo aimi pm fun iṣẹ ṣiṣe to pọ julọ

Eto PHP-FPM: lo aimi pm fun iṣẹ ṣiṣe to pọ julọ

Ẹya ti a ko ṣatunkọ ti nkan yii jẹ atẹjade ni akọkọ lori haydenjames.io ati atejade nibi pẹlu rẹ aiye onkowe.

Emi yoo sọ fun ọ ni ṣoki bi o ṣe dara julọ lati tunto PHP-FPM lati mu iṣelọpọ pọ si, dinku airi, ati lo Sipiyu ati iranti ni igbagbogbo. Nipa aiyipada, laini PM (oluṣakoso ilana) ni PHP-FPM jẹ ìmúdàgba, ati pe ti o ko ba ni iranti to, lẹhinna o dara lati fi sori ẹrọ fun ibere. Jẹ ki a ṣe afiwe awọn aṣayan iṣakoso 2 ti o da lori iwe php.net ki o wo bii ayanfẹ mi ṣe yatọ si wọn aimi pm fun ijabọ iwọn didun giga:

pm = ìmúdàgba - nọmba awọn ilana ọmọ ni tunto ni agbara da lori awọn itọsọna wọnyi: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = ondemand - awọn ilana ni a ṣẹda lori ibeere (ni idakeji si ẹda ti o ni agbara, nigbati awọn olupin pm.start_servers ti ṣe ifilọlẹ nigbati iṣẹ naa bẹrẹ).
pm = aimi - awọn nọmba ti omo lakọkọ ti wa ni ti o wa titi ati ki o tọkasi awọn paramita pm.max_children.

Fun alaye, wo atokọ pipe ti awọn itọsọna agbaye php-fpm.conf.

Awọn ibajọra laarin oluṣakoso ilana PHP-FPM ati oluṣakoso igbohunsafẹfẹ Sipiyu

Eyi le dabi aiṣedeede, ṣugbọn Emi yoo sopọ eyi si koko ti iṣeto PHP-FPM. Tani ko ni iriri idinku ero isise ni o kere ju ẹẹkan - lori kọǹpútà alágbèéká kan, ẹrọ foju tabi olupin ifiṣootọ. Ranti iwọn igbohunsafẹfẹ Sipiyu? Awọn aṣayan wọnyi wa fun nix ati Windows le mu ilọsiwaju eto iṣẹ ati idahun nipasẹ yiyipada eto fifa ero isise lati fun ibere on iṣẹ ṣiṣe *. Ni akoko yii, jẹ ki a ṣe afiwe awọn apejuwe ati wo awọn ibajọra:

gomina = eletan - ìmúdàgba igbelosoke ti isise igbohunsafẹfẹ da lori awọn ti isiyi fifuye. Ni kiakia n fo si igbohunsafẹfẹ ti o pọju lẹhinna dinku rẹ bi awọn akoko ti alekun aiṣiṣẹ.
gomina=Konsafetifu= ìmúdàgba igbohunsafẹfẹ igbelosoke da lori awọn ti isiyi fifuye. Ṣe alekun ati dinku igbohunsafẹfẹ diẹ sii laisiyonu ju ondemand.
Gomina = išẹ - igbohunsafẹfẹ nigbagbogbo pọju.

Fun alaye, wo ni kikun akojọ ti awọn ero isise igbohunsafẹfẹ eleto sile.

Wo awọn afijq bi? Mo fẹ lati ṣafihan afiwe yii lati parowa fun ọ pe o dara julọ lati lo pm aimi fun PHP-FPM.

Fun paramita eleto isise išẹ ṣe iranlọwọ lati mu iṣẹ pọ si lailewu nitori pe o fẹrẹ gbẹkẹle opin Sipiyu olupin naa. Ni afikun si eyi, dajudaju, awọn ifosiwewe tun wa gẹgẹbi iwọn otutu, idiyele batiri (ninu kọǹpútà alágbèéká) ati awọn ipa ẹgbẹ miiran ti nṣiṣẹ isise nigbagbogbo ni 100%. Eto iṣẹ ṣiṣe ni idaniloju iṣẹ ero isise ti o yara ju. Ka, fun apẹẹrẹ, nipa paramita force_turbo ni Rasipibẹri Pipẹlu eyiti RPi nronu yoo lo olutọsọna išẹ, nibiti ilọsiwaju iṣẹ yoo jẹ akiyesi diẹ sii nitori iyara aago Sipiyu kekere.

Lilo pm aimi lati ṣaṣeyọri iṣẹ olupin ti o pọju

PHP-FPM aṣayan pm aimi ibebe da lori free iranti lori olupin. Ti iranti ba kere, o dara lati yan fun ibere tabi ìmúdàgba. Ni apa keji, ti o ba ni iranti, o le yago fun oluṣakoso ilana PHP ni oke nipasẹ eto pm aimi si awọn ti o pọju olupin agbara. Ni awọn ọrọ miiran, ti ohun gbogbo ba ṣe iṣiro daradara, o nilo lati fi idi rẹ mulẹ pm.aimi si iwọn ti o pọju ti awọn ilana PHP-FPM ti o le ṣe, laisi ṣiṣẹda awọn iṣoro pẹlu iranti kekere tabi kaṣe. Ṣugbọn kii ṣe giga tobẹẹ ti o bori awọn olutọsọna ati ṣajọpọ opo ti awọn iṣẹ PHP-FPM ti nduro lati ṣiṣẹ..

Eto PHP-FPM: lo aimi pm fun iṣẹ ṣiṣe to pọ julọ

Ninu sikirinifoto loke, olupin naa ni pm = aimi ati pm.max_children = 100, ati pe eyi gba to 10 GB lati inu 32 ti o wa. San ifojusi si awọn ọwọn ti a ṣe afihan, ohun gbogbo jẹ kedere nibi. Ninu sikirinifoto yii o fẹrẹ to awọn olumulo 200 ti nṣiṣe lọwọ (diẹ sii ju awọn aaya 60) ni Awọn atupale Google. Ni ipele yii, isunmọ 70% ti awọn ilana ọmọ PHP-FPM ṣi wa laišišẹ. Eyi tumọ si pe PHP-FPM nigbagbogbo ṣeto si iye ti o pọju ti awọn orisun olupin laibikita ijabọ lọwọlọwọ. Ilana aiṣiṣẹ n duro de awọn oke ijabọ ati dahun lẹsẹkẹsẹ. O ko ni lati duro titi pm yoo ṣẹda ọmọ lakọkọ ati ki o si fopin si wọn nigbati awọn akoko dopin pm.process_idle_timeout. Mo ṣeto iye si ga julọ pm.max_requestsnitori eyi jẹ olupin ti n ṣiṣẹ laisi awọn n jo iranti ni PHP. O le fi sori ẹrọ pm.max_requests = 0 pẹlu aimi ti o ba ni igboya patapata ni awọn iwe afọwọkọ PHP ti o wa ati ọjọ iwaju. Ṣugbọn o dara lati tun awọn iwe afọwọkọ ṣiṣẹ ni akoko pupọ. Ṣeto nọmba nla ti awọn ibeere, nitori a fẹ lati yago fun awọn idiyele pm ti ko wulo. Fun apẹẹrẹ, o kere ju pm.max_requests = 1000 - da lori opoiye pm.max_children ati awọn nọmba ti ibeere fun keji.

Sikirinifoto fihan aṣẹ naa Linux oke, filtered nipasẹ u (olumulo) ati orukọ olumulo PHP-FPM. Nikan ni igba akọkọ 50 tabi si wi lakọkọ ti han (Emi ko ka pato), sugbon pataki oke fihan awọn oke statistiki ti o dada sinu ebute window. Ninu apere yi lẹsẹsẹ nipasẹ % Sipiyu (% CPU). Lati wo gbogbo awọn ilana PHP-FPM 100, ṣiṣe aṣẹ naa:

top -bn1 | grep php-fpm

Nigbati lati lo pm ondemand ati ìmúdàgba

Ti o ba lo pm ìmúdàgba, iru awọn aṣiṣe waye:

WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children

Gbiyanju yiyipada paramita, aṣiṣe kii yoo lọ, bii ti ṣe apejuwe ninu ifiweranṣẹ yii lori Serverfault. Ni idi eyi, iye pm.min kere ju, ati pe niwọn igba ti ijabọ wẹẹbu yatọ pupọ ati pe o ni awọn oke giga ati awọn afonifoji ti o jinlẹ, o nira lati ṣatunṣe deede pm ìmúdàgba. Nigbagbogbo a lo pm fun ibere, bi a ṣe gba ọ niyanju ni ifiweranṣẹ kanna. Sugbon yi jẹ ani buru, nitori fun ibere fopin si awọn ilana aiṣiṣẹ si odo nigbati o wa ni kekere tabi ko si ijabọ, ati pe iwọ yoo tun pari pẹlu oke ti iyipada ijabọ. Ayafi, dajudaju, o ṣeto akoko idaduro nla kan. Ati lẹhinna o dara lati lo pm.aimi + nọmba ti o ga pm.max_requests.

PM ìmúdàgba ati ni pataki fun ibere le wa ni ọwọ ti o ba ni ọpọ awọn adagun omi PHP-FPM. Fun apẹẹrẹ, o gbalejo ọpọ awọn akọọlẹ cPanel tabi awọn oju opo wẹẹbu lọpọlọpọ ni awọn adagun omi oriṣiriṣi. Mo ni olupin kan pẹlu, sọ, awọn akọọlẹ cpanel 100+ ati nipa awọn ibugbe 200, ati pm.static tabi paapaa agbara ko ni gba mi la. Gbogbo ohun ti o nilo nibi ni fun ibere, lẹhinna, diẹ sii ju idamẹta meji ti awọn aaye ayelujara gba diẹ tabi ko si ijabọ, ati pẹlu fun ibere gbogbo awọn ilana ọmọ yoo ṣubu, eyi ti yoo gba wa ni iranti pupọ! O da, awọn olupilẹṣẹ cPanel ṣe akiyesi eyi ati ṣeto iye si aiyipada fun ibere. Ni iṣaaju, nigbati aiyipada jẹ ìmúdàgba, PHP-FPM ko dara fun awọn olupin ti o nšišẹ lọwọ rara. Ọpọlọpọ ti lo suPHP, nitori pm ìmúdàgba iranti ti o jẹ paapaa pẹlu awọn adagun-omi ti ko ṣiṣẹ ati awọn akọọlẹ cPanel PHP-FPM. O ṣeese julọ, ti ijabọ naa ba dara, iwọ kii yoo gbalejo lori olupin pẹlu nọmba nla ti awọn adagun-odo PHP-FPM (gbigba alejo gbigba).

ipari

Ti o ba nlo PHP-FPM ati ijabọ rẹ jẹ eru, awọn alakoso ilana fun ibere и ìmúdàgba fun PHP-FPM yoo ni opin iwọn losi nitori ori oke wọn. Loye eto rẹ ki o tunto awọn ilana PHP-FPM ni ibamu si agbara olupin ti o pọju. Eto akọkọ pm.max_children da lori o pọju pm lilo ìmúdàgba tabi fun ibere, ati lẹhinna mu iye yii pọ si ipele nibiti iranti ati ero isise yoo ṣiṣẹ laisi fifuye pupọ. Iwọ yoo ṣe akiyesi pe pẹlu pm aimiNiwọn bi o ti ni ohun gbogbo ni iranti, awọn spikes ijabọ yoo fa awọn spikes Sipiyu diẹ sii ju akoko lọ, ati olupin ati awọn iwọn fifuye Sipiyu yoo ipele jade. Iwọn ilana ilana PHP-FPM da lori olupin wẹẹbu ati nilo iṣeto ni afọwọṣe, nitorinaa awọn alakoso ilana adaṣe diẹ sii jẹ ìmúdàgba и fun ibere - diẹ gbajumo. Mo nireti pe nkan naa wulo.

DUP Ṣe afikun apẹrẹ ala-ilẹ ab. Ti awọn ilana PHP-FPM ba wa ni iranti, iṣẹ ṣiṣe pọ si laibikita agbara iranti nibiti wọn joko ati duro. Wa aṣayan ti o dara julọ fun ara rẹ.

Eto PHP-FPM: lo aimi pm fun iṣẹ ṣiṣe to pọ julọ

orisun: www.habr.com

Fi ọrọìwòye kun