Una versione inedita di questu articulu hè stata publicata urigginariamente
Vi dicu in poche parole u megliu cunfigurà PHP-FPM per aumentà u throughput, riduce a latenza, è aduprà CPU è memoria più coerente. Per automaticamente, a linea PM (gestore di prucessu) in PHP-FPM hè dinamichi, è se ùn avete micca abbastanza memoria, allora hè megliu installà à dumanda. Comparamu 2 opzioni di cuntrollu basatu nantu à a documentazione php.net è vede cumu u mo preferitu difiere da elli static pm per u trafficu altu volume:
pm = dinamica - u numeru di prucessi di u zitellu hè cunfiguratu dinamicamente basatu annantu à e seguenti direttive: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = à dumanda - i prucessi sò creati nantu à a dumanda (in uppusizione à a creazione dinamica, quandu pm.start_servers sò lanciati quandu u serviziu principia).
pm = staticu - u numeru di prucessi di u zitellu hè fissu è hè indicatu da u paràmetru pm.max_children.
Per i dettagli, vede
Similitudini trà u gestore di processu PHP-FPM è u controller di frequenza di CPU
Questu pò sembra offtopic, ma aghju da ligà questu à u tema di a cunfigurazione PHP-FPM. Quale hè chì ùn hà micca sperimentatu un rallentamentu di u processatore almenu una volta - in un laptop, macchina virtuale o servitore dedicatu? Ricurdativi di a scala di frequenza di CPU? Queste opzioni sò dispunibuli per nix è Windows ponu migliurà u rendiment di u sistema è a reattività cambiendu l'impostazione di l'acceleratore di u processore à dumanda nantu prestazione*. Sta volta, paragunemu e descrizzioni è fighjemu e similitudini:
guvernatore = à la demande - scala dinamica di a frequenza di u processatore secondu a carica attuale. Salta rapidamente à a frequenza massima è poi a riduce cum'è i periodi di inattività aumentanu.
guvernatore = cunservatore = scala di frequenza dinamica secondu a carica attuale. Aumenta è diminuisce a frequenza più liscia chè à a dumanda.
Governatore = performance - a frequenza hè sempre massima.
Per i dettagli, vede
Vede e similitudini? Vuliu mustrà stu paragone per cunvince chì hè megliu aduprà pm staticu per PHP-FPM.
Per u paràmetru di regulatore di processore spettaculu aiuta à aumentà in modu sicuru u rendiment perchè hè quasi interamente dipende da u limitu CPU di u servitore. In più di questu, sicuru, ci sò ancu fatturi cum'è a temperatura, a carica di a bateria (in un laptop) è altri effetti secundari di u processatore constantemente in 100%. L'impostazione di prestazione assicura u rendimentu più veloce di u processore. Leghjite, per esempiu, circa
Utilizendu pm static per ottene u massimu rendimentu di u servitore
Opzione PHP-FPM pm staticu dipende largamente da a memoria libera in u servitore. Se a memoria hè bassa, hè megliu di sceglie à dumanda o dinamichi. Per d 'altra banda, sè vo avete memoria, pudete evità l'overhead di u gestore di processu PHP per stabilisce pm static à a capacità massima di u servitore. In altri palori, se tuttu hè calculatu bè, avete bisognu di stabilisce pm.static à u voluminu massimu di prucessi PHP-FPM chì ponu esse eseguiti, senza creà prublemi cù poca memoria o cache. Ma ùn hè micca cusì altu chì sopraffa i processori è accumula una mansa di operazioni PHP-FPM chì aspettanu per esse eseguite..
In a screenshot sopra, u servitore hà pm = static è pm.max_children = 100, è questu occupa circa 10 GB fora di i dispunibuli 32. Prestate attenzione à e culonni evidenziati, tuttu hè chjaru quì. In questa screenshot ci era circa 200 utilizatori attivi (più di 60 seconde) in Google Analytics. À questu livellu, circa 70% di i prucessi di u zitellu PHP-FPM sò sempre inattivi. Questu significa chì PHP-FPM hè sempre stabilitu à a quantità massima di risorse di u servitore indipendentemente da u trafficu attuale. Un prucessu inattivu aspetta i picchi di trafficu è risponde istantaneamente. Ùn avete micca aspittà finu à pm crià i prucessi di u zitellu è poi finisce quandu u periodu scade pm.process_idle_timeout. Aghju stabilitu u valore à assai altu pm.max_requestsperchè questu hè un servitore chì funziona senza perdita di memoria in PHP. Pudete installà pm.max_requests = 0 cun static s'è vo site cumplettamente cunfidendu in i script PHP esistenti è futuri. Ma hè megliu per rinvià i script cù u tempu. Stabilite un gran numaru di richieste, perchè vulemu evità i costi inutili di pm. Per esempiu, almenu pm.max_requests = 1000 - secondu a quantità pm.max_children è u numeru di richieste per seconda.
A screenshot mostra u cumandamentu
top -bn1 | grep php-fpm
Quandu aduprà pm on demand è dinamica
Se utilizate pm dinamichi, errore cum'è questu accade:
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
Pruvate à cambià u paràmetru, l'errore ùn andarà micca, cum'è
PM dinamichi è sopratuttu à dumanda pò esse utile se avete parechje piscine PHP-FPM. Per esempiu, ospitate parechji cunti cPanel o parechji siti web in diverse piscine. Aghju un servitore cù, per dì, 100+ cunti cpanel è circa 200 duminii, è pm.static o ancu dinamica ùn mi salvassi micca. Tuttu ciò chì avete bisognu quì hè à dumanda, Dopu tuttu, più di dui terzi di i siti web ricevenu pocu o micca trafficu, è cun à dumanda tutti i prucessi di u zitellu cascanu, chì ci salverà assai memoria! Fortunatamente, i sviluppatori di cPanel anu nutatu questu è stabiliscenu u valore predeterminatu à dumanda. Nanzu, quandu u predefinitu era dinamichi, PHP-FPM ùn era micca adattatu per i servitori spartuti occupati. Parechji anu utilizatu suPHP, perchè pm dinamichi memoria cunsumata ancu cù pools idle è cunti cPanel PHP-FPM. Hè assai prubabile, se u trafficu hè bonu, ùn sarete micca ospitu in un servitore cù un gran numaru di piscine PHP-FPM (hosting spartutu).
cunchiusioni
Sè vo aduprate PHP-FPM è u vostru trafficu hè pesante, i gestori di prucessu à dumanda и dinamichi per PHP-FPM serà un throughput limitatu per via di u so overhead inherente. Capisce u vostru sistema è cunfigurà i prucessi PHP-FPM secondu a capacità massima di u servitore. Prima set pm.max_children secondu u massimu usu pm dinamichi o à dumanda, è poi aumentà stu valore à un livellu induve a memoria è u processatore travaglià senza esse sovraccaricatu. Avete nutatu chì cun pm staticu, Siccomu avete tuttu in memoria, i picchi di u trafficu pruvucaranu menu picchi di CPU cù u tempu, è i medii di carica di u servitore è di u CPU si stendenu. A dimensione media di u prucessu PHP-FPM dipende da u servitore web è esige una cunfigurazione manuale, cusì i gestori di prucessu più automatizati sò dinamichi и à dumanda - più populari. Spergu chì l'articulu hè stata utile.
DUP Graficu di benchmark aghjuntu
Source: www.habr.com