Një version i pa redaktuar i këtij artikulli u botua fillimisht në
Unë do t'ju tregoj me pak fjalë se si të konfiguroni më mirë PHP-FPM për të rritur xhiron, për të zvogëluar vonesën dhe për të përdorur CPU dhe memorie në mënyrë më të qëndrueshme. Si parazgjedhje, linja PM (menaxheri i procesit) në PHP-FPM është dinamik, dhe nëse nuk keni memorie të mjaftueshme, atëherë është më mirë ta instaloni OnDemand. Le të krahasojmë 2 opsione kontrolli bazuar në dokumentacionin php.net dhe të shohim se si ndryshon e preferuara ime prej tyre i pandryshueshëm pm për trafik me volum të lartë:
pm = dinamike — numri i proceseve të fëmijëve është konfiguruar në mënyrë dinamike bazuar në direktivat e mëposhtme: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = me kërkesë - proceset krijohen sipas kërkesës (në krahasim me krijimin dinamik, kur pm.start_servers hapen kur shërbimi fillon).
pm = statike — numri i proceseve të fëmijëve është fiks dhe tregohet nga parametri pm.max_fëmijët.
Për detaje, shihni
Ngjashmëritë midis menaxherit të procesit PHP-FPM dhe kontrolluesit të frekuencës së CPU
Kjo mund të duket jashtë temës, por unë do ta lidh këtë me temën e konfigurimit të PHP-FPM. Kush nuk ka përjetuar një ngadalësim të procesorit të paktën një herë - në një laptop, makinë virtuale ose server të dedikuar. E mbani mend shkallën e frekuencës së CPU-së? Këto opsione janë të disponueshme për nix dhe Windows mund të përmirësojnë performancën dhe reagimin e sistemit duke ndryshuar cilësimin e mbytjes së procesorit nga OnDemand mbi performanca*. Këtë herë, le të krahasojmë përshkrimet dhe të shohim ngjashmëritë:
guvernator=kërkoj — shkallëzimi dinamik i frekuencës së procesorit në varësi të ngarkesës aktuale. Kërcen me shpejtësi në frekuencën maksimale dhe më pas e redukton me rritjen e periudhave të pasivitetit.
guvernator=konservator= shkallëzimi dinamik i frekuencës në varësi të ngarkesës aktuale. Rrit dhe ul frekuencën më lehtë sesa me kërkesë.
Guvernator = performancë — Frekuenca është gjithmonë maksimale.
Për detaje, shihni
Shihni ngjashmëritë? Doja të tregoja këtë krahasim për t'ju bindur se është më mirë ta përdorni pm statike për PHP-FPM.
Për parametrin e rregullatorit të procesorit performanca ndihmon në rritjen e sigurtë të performancës sepse varet pothuajse tërësisht nga kufiri i CPU-së së serverit. Përveç kësaj, natyrisht, ka edhe faktorë të tillë si temperatura, ngarkimi i baterisë (në një laptop) dhe efekte të tjera anësore të funksionimit të vazhdueshëm të procesorit në 100%. Cilësimi i performancës siguron performancën më të shpejtë të procesorit. Lexoni, për shembull, rreth
Përdorimi i pm static për të arritur performancën maksimale të serverit
Opsioni PHP-FPM pm statike në masë të madhe varet nga memoria e lirë në server. Nëse memoria është e ulët, është më mirë të zgjidhni OnDemand ose dinamik. Nga ana tjetër, nëse keni memorie, mund të shmangni ngarkesat e menaxherit të procesit PHP duke vendosur pm i pandryshueshëm në kapacitetin maksimal të serverit. Me fjalë të tjera, nëse gjithçka llogaritet mirë, duhet të vendosni pm.statike në vëllimin maksimal të proceseve PHP-FPM që mund të ekzekutohen, pa krijuar probleme me memorie të ulët ose cache. Por jo aq e lartë sa të mbingarkojë procesorët dhe të grumbullojë një sërë operacionesh PHP-FPM që presin të ekzekutohen.
Në pamjen e mësipërme, serveri ka pm = statike dhe pm.max_fëmijë = 100, dhe kjo kërkon afërsisht 10 GB nga 32 të disponueshme. Kushtojini vëmendje kolonave të theksuara, gjithçka është e qartë këtu. Në këtë pamje ekrani kishte afërsisht 200 përdorues aktivë (më shumë se 60 sekonda) në Google Analytics. Në këtë nivel, afërsisht 70% e proceseve të fëmijëve PHP-FPM janë ende të papunë. Kjo do të thotë që PHP-FPM është vendosur gjithmonë në sasinë maksimale të burimeve të serverit, pavarësisht nga trafiku aktual. Një proces i papunë pret për kulmin e trafikut dhe përgjigjet menjëherë. Ju nuk duhet të prisni derisa pm do të krijojë procese të fëmijëve dhe më pas do t'i përfundojë ato kur të përfundojë periudha pm.process_idle_timeout. E vendosa vlerën në shumë të lartë pm.max_kërkesatsepse ky është një server që funksionon pa rrjedhje memorie në PHP. Ju mund të instaloni pm.max_kërkesat = 0 me static nëse jeni plotësisht të sigurt në skriptet ekzistuese dhe të ardhshme PHP. Por është më mirë që të riprodhohen skenarët me kalimin e kohës. Vendosni një numër të madh kërkesash, sepse duam të shmangim kostot e panevojshme të pm. Për shembull, të paktën pm.max_kërkesat = 1000 - në varësi të sasisë pm.max_fëmijët dhe numrin e kërkesave për sekondë.
Pamja e ekranit tregon komandën
top -bn1 | grep php-fpm
Kur të përdoret pm ondemand dhe dinamike
Nëse përdorni pm dinamik, ndodhin gabime si ky:
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
Provoni të ndryshoni parametrin, gabimi nuk do të largohet, si
PM dinamik dhe posaçërisht OnDemand mund të jetë i dobishëm nëse keni grupe të shumta PHP-FPM. Për shembull, ju pret llogari të shumta cPanel ose uebfaqe të shumta në pishina të ndryshme. Unë kam një server me, të themi, 100+ llogari cpanel dhe rreth 200 domene, dhe pm.static apo edhe dinamik nuk do të më shpëtonte. Gjithçka që ju nevojitet këtu është OnDemand, në fund të fundit, më shumë se dy të tretat e faqeve të internetit marrin pak ose aspak trafik, dhe me OnDemand të gjitha proceset e fëmijëve do të bien, gjë që do të na kursejë shumë memorie! Për fat të mirë, zhvilluesit e cPanel e vunë re këtë dhe vendosën vlerën në parazgjedhje OnDemand. Më parë, kur parazgjedhja ishte dinamik, PHP-FPM nuk ishte fare i përshtatshëm për serverët e përbashkët të zënë. Shumë kanë përdorur suPHP, sepse pm dinamik memorie të konsumuar edhe me grupe boshe dhe llogari të cPanel PHP-FPM. Me shumë mundësi, nëse trafiku është i mirë, nuk do të strehoheni në një server me një numër të madh të pishinave PHP-FPM (strehimi i përbashkët).
Përfundim
Nëse jeni duke përdorur PHP-FPM dhe trafiku juaj është i rëndë, menaxherët e procesit OnDemand и dinamik për PHP-FPM do të jetë i kufizuar për shkak të shpenzimeve të tyre të përgjithshme. Kuptoni sistemin tuaj dhe konfiguroni proceset PHP-FPM sipas kapacitetit maksimal të serverit. Seti i parë pm.max_fëmijët në varësi të përdorimit maksimal të pm dinamik ose OnDemand, dhe më pas rrisni këtë vlerë në një nivel ku memoria dhe procesori do të punojnë pa u mbingarkuar. Do ta vini re se me pm statike, meqenëse keni gjithçka në memorie, rritjet e trafikut do të shkaktojnë më pak rritje të CPU-së me kalimin e kohës dhe mesataret e ngarkesës së serverit dhe CPU-së do të nivelizohen. Madhësia mesatare e procesit PHP-FPM varet nga serveri i uebit dhe kërkon konfigurim manual, kështu që menaxherët më të automatizuar të procesit janë dinamik и OnDemand - më popullor. Shpresoj se artikulli ishte i dobishëm.
DUP Grafiku i standardeve të shtuar
Burimi: www.habr.com