Ukusethwa kwe-PHP-FPM: sebenzisa i-pm static ukuze uthole ukusebenza okuphezulu

Ukusethwa kwe-PHP-FPM: sebenzisa i-pm static ukuze uthole ukusebenza okuphezulu

Inguqulo engahleliwe yalesi sihloko ishicilelwe ekuqaleni haydenjames.io futhi yashicilelwa lapha ngemvume yakhe umbhali.

Ngizokutshela ngamafuphi ukuthi ungayilungisa kanjani i-PHP-FPM ukuze ukhuphule ukuphuma, unciphise ukubambezeleka, futhi usebenzise i-CPU nenkumbulo ngokungaguquki. Ngokuzenzakalelayo, ulayini we-PM (umphathi wenqubo) ku-PHP-FPM ngu ashukumisayo, futhi uma ungenayo inkumbulo eyanele, khona-ke kungcono ukufaka efunwa kakhulu. Ake siqhathanise izinketho zokulawula ezi-2 ezisekelwe emibhalweni ye-php.net futhi sibone ukuthi intandokazi yami ihluke kanjani kuzo Static pm ngethrafikhi yevolumu ephezulu:

pm = ashukumisayo - inani lezinqubo zengane lilungiswa ngokuguquguqukayo ngokusekelwe kulezi ziqondiso ezilandelayo: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = isidingo - izinqubo zenziwa ngokufunwa (ngokuphambene nokudala okuguquguqukayo, lapho ama-pm.start_servers ethulwa lapho isevisi iqala).
pm = static - inombolo yezinqubo zengane imisiwe futhi iboniswa ipharamitha pm.max_children.

Ukuze uthole imininingwane, bheka uhlu oluphelele lweziqondiso zomhlaba wonke php-fpm.conf.

Ukufana phakathi komphathi wenqubo ye-PHP-FPM nesilawuli samafrikhwensi se-CPU

Lokhu kungase kubonakale kungekho esihlokweni, kodwa ngizoxhumanisa lokhu nesihloko sokucushwa kwe-PHP-FPM. Ubani ongakaze abone ukwehla kwephrosesa okungenani kanye - kukhompuyutha ephathekayo, umshini obonakalayo noma iseva ezinikezele? Khumbula ukukala imvamisa ye-CPU? Lezi zinketho ziyatholakala i-nix ne-Windows ingathuthukisa ukusebenza kwesistimu nokusabela ngokushintsha ukulungiselelwa kwe-throttle processor kusuka efunwa kakhulu on ukusebenza*. Kulokhu, ake siqhathanise izincazelo futhi sibheke ukufana:

umbusi=isidingo β€” ukukala okuguquguqukayo kwefrikhwensi yephrosesa kuye ngomthwalo wamanje. Gxumela ngokushesha kubuningi obukhulu bese uyayehlisa njengoba izikhathi zokungasebenzi zikhula.
umbusi=ogcinayo= i-dynamic frequency scaling kuye ngomthwalo wamanje. Yandisa futhi yehlise imvamisa ngokushelela kunesidingo.
Umbusi = ukusebenza - imvamisa ihlala iphezulu.

Ukuze uthole imininingwane, bheka uhlu olugcwele lwemingcele yesilawuli sephrosesa.

Uyakubona ukufana? Bengifuna ukukhombisa lesi siqhathaniso ukuze ukholwe ukuthi kungcono kakhulu ukusebenzisa pm static ye-PHP-FPM.

Okwepharamitha yesilawuli seprosesa ukusebenza isiza ukukhulisa ukusebenza ngokuphephile ngoba icishe incike ngokuphelele emkhawulweni we-CPU yeseva. Ngaphezu kwalokhu, kunjalo, kunezici ezifana nezinga lokushisa, ukushajwa kwebhethri (kwi-laptop) kanye neminye imiphumela engemihle yokusebenzisa njalo iphrosesa ku-100%. Isilungiselelo sokusebenza siqinisekisa ukusebenza kwephrosesa eshesha kakhulu. Funda, isibonelo, mayelana force_turbo ipharamitha ku-Raspberry Pi, lapho iphaneli ye-RPi izosebenzisa khona isilawuli ukusebenza, lapho ukuthuthukiswa kokusebenza kuzobonakala kakhulu ngenxa yejubane eliphansi lewashi le-CPU.

Kusetshenziswa i-pm static ukufeza ukusebenza kweseva okuphezulu

Inketho ye-PHP-FPM pm static kuncike kakhulu kwimemori yamahhala kuseva. Uma inkumbulo iphansi, kungcono ukukhetha efunwa kakhulu noma ashukumisayo. Ngakolunye uhlangothi, uma unenkumbulo, ungagwema umphathi wenqubo ye-PHP ngokubeka pm Static kumthamo omkhulu weseva. Ngamanye amazwi, uma konke kubalwe kahle, udinga ukusungula pm.static kumthamo omkhulu wezinqubo ze-PHP-FPM ezingenziwa, ngaphandle kokudala izinkinga ngememori ephansi noma i-cache. Kepha ayiphezulu kakhulu kangangokuthi iqeda amaphrosesa futhi iqongelela inqwaba yemisebenzi ye-PHP-FPM elinde ukubulawa..

Ukusethwa kwe-PHP-FPM: sebenzisa i-pm static ukuze uthole ukusebenza okuphezulu

Kusithombe-skrini esingenhla, iseva inakho pm = static futhi pm.max_children = 100, futhi lokhu kuthatha cishe u-10 GB kokutholakalayo 32. Naka amakholomu agqanyisiwe, yonke into icacile lapha. Kulesi sithombe-skrini bekunabasebenzisi abasebenzayo abangaba ngu-200 (ngaphezu kwamasekhondi angu-60) ku-Google Analytics. Kuleli zinga, cishe u-70% wezinqubo zezingane ze-PHP-FPM azikasebenzi. Lokhu kusho ukuthi i-PHP-FPM ihlezi isethelwe enanini eliphezulu lezinsiza zeseva kungakhathaliseki ithrafikhi yamanje. Inqubo yokungenzi lutho ilinda ukuphakama kwethrafikhi futhi iphendule ngokushesha. Awudingi ukulinda kuze kube pm izodala izinqubo zengane bese izinqamula lapho isikhathi siphela pm.process_idle_timeout. Ngetha inani phezulu kakhulu pm.max_requestsngoba lena iseva esebenzayo engenakho ukuvuza kwenkumbulo ku-PHP. Ungakwazi ukufaka pm.max_requests = 0 nge-static uma uzethemba ngokuphelele emibhalweni ye-PHP ekhona nezayo. Kodwa kungcono ukuphinda usebenzise izikripthi ngokuhamba kwesikhathi. Setha inani elikhulu lezicelo, ngoba sifuna ukugwema izindleko ze-pm ezingadingekile. Ngokwesibonelo, okungenani pm.max_requests = 1000 - kuye ngobuningi pm.max_children kanye nenani lezicelo ngomzuzwana.

Isithombe-skrini sibonisa umyalo I-Linux ephezulu, ihlungwe nguwe (umsebenzisi) kanye negama lomsebenzisi le-PHP-FPM. Kuboniswa kuphela izinqubo zokuqala ezingu-50 noma ngaphezulu (angizange ngibale kahle), kodwa empeleni phezulu kubonisa izibalo eziphezulu ezingena efasiteleni letheminali. Kulokhu kuhlungwe nge-% CPU (% CPU). Ukubona zonke izinqubo eziyi-100 ze-PHP-FPM, sebenzisa umyalo:

top -bn1 | grep php-fpm

Kusetshenziswa nini i-pm okufunayo kanye ne-dynamic

Uma usebenzisa i-pm ashukumisayo, amaphutha afana nalawa ayenzeka:

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

Zama ukushintsha ipharamitha, iphutha ngeke lihambe, njengokuthi kuchazwe kulokhu okuthunyelwe ku-Serverfault. Kulokhu, inani le-pm.min belincane kakhulu, futhi njengoba ithrafikhi yewebhu ihluka kakhulu futhi ineziqongo eziphakeme nezigodi ezijulile, kunzima ukulungisa ngokwanele pm. ashukumisayo. Ngokuvamile pm isetshenziswa efunwa kakhulu, njengoba kushiwo eposini elifanayo. Kodwa lokhu kubi nakakhulu, ngoba efunwa kakhulu inqamula izinqubo zokungenzi lutho ziye kuqanda uma kunethrafikhi encane noma ingekho, futhi usazogcina une-overhead yokushintsha ithrafikhi. Ngaphandle uma kunjalo, usethe isikhathi esikhulu sokulinda. Futhi-ke kungcono ukuyisebenzisa pm.static + inombolo ephezulu pm.max_requests.

PM ashukumisayo futhi ikakhulukazi efunwa kakhulu kungase kube usizo uma unamachibi amaningi we-PHP-FPM. Isibonelo, ubamba ama-akhawunti amaningi e-cPanel noma amawebhusayithi amaningi kumachibi ahlukene. Ngineseva enama-akhawunti we-cpanel angu-100+ kanye nezizinda ezingaba ngu-200, futhi i-pm.static noma i-dynamic ingeke ingisindise. Konke okudingayo lapha efunwa kakhulu, ngemva kwakho konke, ngaphezu kwezingxenye ezimbili kwezintathu zamawebhusayithi athola ithrafikhi encane noma awatholi nhlobo, futhi nge efunwa kakhulu zonke izinqubo zezingane zizowa, okuzosisindisa inkumbulo eningi! Ngenhlanhla, abathuthukisi be-cPanel bakubonile lokhu futhi basetha inani libe ngokuzenzakalelayo efunwa kakhulu. Ngaphambilini, lapho okuzenzakalelayo kwaba ashukumisayo, i-PHP-FPM ibingazifanele nhlobo iziphakeli ezabiwe ezimatasa. Abaningi basebenzise I-suPHPngoba pm ashukumisayo inkumbulo edliwe ngisho namachibi angasebenzi kanye nama-akhawunti e-cPanel PHP-FPM. Kungenzeka ukuthi, uma ithrafikhi ilungile, ngeke ubanjwe kuseva enenani elikhulu lamachibi e-PHP-FPM (ukubamba okwabiwe).

isiphetho

Uma usebenzisa i-PHP-FPM futhi ithrafikhi yakho iyasinda, phatha abaphathi efunwa kakhulu ΠΈ ashukumisayo ye-PHP-FPM izoba nomkhawulo ngenxa ye-overhead yayo engokwemvelo. Qonda uhlelo lwakho futhi ulungiselele izinqubo ze-PHP-FPM ngokuya ngomthamo omkhulu weseva. Isethi yokuqala pm.max_children kuye ngokusetshenziswa okuphezulu kwe-pm ashukumisayo noma efunwa kakhulu, bese ukhuphula leli nani liye ezingeni lapho inkumbulo nephrosesa kuzosebenza ngaphandle kokulayishwa ngokweqile. Uzoqaphela lokho nge pm static, njengoba unakho konke enkumbulweni, ukukhuphuka kwethrafikhi kuzobangela ukukhuphuka okuncane kwe-CPU ngokuhamba kwesikhathi, futhi iseva nezilinganiso zokulayisha ze-CPU zizophuma. Usayizi wenqubo ye-PHP-FPM ojwayelekile uncike kuseva yewebhu futhi udinga ukucushwa okwenziwa ngesandla, ngakho-ke abaphathi bezinqubo ezizenzakalelayo ashukumisayo ΠΈ efunwa kakhulu - ethandwa kakhulu. Ngithemba ukuthi isihloko besiwusizo.

I-UPD Kwengezwe ishadi lebhentshimakhi ab. Uma izinqubo ze-PHP-FPM zisenkumbulweni, ukusebenza kuyanda ngezindleko zokusetshenziswa kwememori lapho behlala khona balinde. Zitholele inketho engcono kakhulu.

Ukusethwa kwe-PHP-FPM: sebenzisa i-pm static ukuze uthole ukusebenza okuphezulu

Source: www.habr.com

Engeza amazwana