Nkhani yomwe sinasinthidwe idasindikizidwa poyamba
Ndikuuzani mwachidule momwe mungakhazikitsire PHP-FPM kuti muwonjezere kutulutsa, kuchepetsa latency, ndikugwiritsa ntchito CPU ndi kukumbukira nthawi zonse. Mwachikhazikitso, mzere wa PM (process manager) mu PHP-FPM ndi zazikulu, ndipo ngati mulibe kukumbukira kokwanira, ndiye kuti ndi bwino kukhazikitsa zomwe zikufunidwa. Tiyeni tifanizire njira ziwiri zowongolera kutengera zolemba za php.net ndikuwona momwe zomwe ndimakonda zimasiyanirana nazo. static pm chifukwa cha kuchuluka kwa magalimoto:
pm = mphamvu - kuchuluka kwa njira za ana kumakonzedwa mokhazikika kutengera malangizo awa: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = kufuna - machitidwe amapangidwa pofunidwa (mosiyana ndi chilengedwe champhamvu, pamene pm.start_servers imayambitsidwa pamene ntchito ikuyamba).
pm = static - chiwerengero cha njira za ana chimakhazikitsidwa ndipo chikuwonetsedwa ndi chizindikiro pm.max_children.
Kuti mudziwe zambiri, onani
Zofanana pakati pa PHP-FPM process manager ndi CPU frequency controller
Izi zitha kuwoneka ngati zachilendo, koma ndikulumikiza izi ndi mutu wa kasinthidwe ka PHP-FPM. Ndani sanakumanepo ndi kuchepa kwa purosesa kamodzi - pa laputopu, makina enieni kapena seva yodzipatulira? Mukukumbukira makulitsidwe pafupipafupi a CPU? Zosankha izi zilipo nix ndi Windows zitha kupititsa patsogolo magwiridwe antchito ndi kuyankha mwakusintha mawonekedwe a processor throttle kuchokera zomwe zikufunidwa pa ntchito*. Nthawi ino, tiyeni tifananize mafotokozedwewo ndikuwona kufanana kwake:
bwanamkubwa=zofuna - makulitsidwe amphamvu a purosesa pafupipafupi kutengera katundu wapano. Amalumpha mwachangu mpaka kufika pamlingo wambiri kenako ndikuchepetsa pomwe nthawi zosagwira ntchito zikuwonjezeka.
bwanamkubwa=wosunga= dynamic frequency makulitsidwe kutengera katundu panopa. Amachulukitsa ndikuchepetsa ma frequency bwino kuposa momwe amafunira.
Governor = performance - pafupipafupi ndi nthawi zonse pazipita.
Kuti mudziwe zambiri, onani
Mukuwona kufanana? Ndinkafuna kusonyeza kufananitsa uku kuti ndikutsimikizireni kuti ndibwino kugwiritsa ntchito pm static kwa PHP-FPM.
Kwa parameter ya processor regulator ntchito imathandizira kuwonjezera magwiridwe antchito chifukwa zimatengera malire a seva ya CPU. Kuphatikiza pa izi, palinso zinthu monga kutentha, batire (mu laputopu) ndi zotsatira zina zongoyendetsa purosesa pa 100%. Kusintha kwa magwiridwe antchito kumatsimikizira kuti purosesa imagwira ntchito mwachangu. Werengani, mwachitsanzo, za
Kugwiritsa ntchito pm static kukwaniritsa magwiridwe antchito apamwamba a seva
PHP-FPM njira pm static makamaka zimadalira kukumbukira kwaulere pa seva. Ngati kukumbukira kuli kochepa, ndi bwino kusankha zomwe zikufunidwa kapena zazikulu. Kumbali ina, ngati muli ndi kukumbukira, mutha kupewa woyang'anira ndondomeko ya PHP pokhazikitsa pm static mpaka kuchuluka kwa seva. Mwa kuyankhula kwina, ngati zonse zawerengedwa bwino, muyenera kukhazikitsa pm.static mpaka kuchuluka kwa njira za PHP-FPM zomwe zitha kuchitidwa, popanda kupanga zovuta ndi kukumbukira kochepa kapena cache. Koma osati okwera kwambiri kotero kuti amalemetsa mapurosesa ndikuunjikira ntchito zambiri za PHP-FPM zomwe zikudikirira kuphedwa..
Mu chithunzi pamwambapa, seva ili nayo pm = static ndi pm.max_children = 100, ndipo izi zimatenga pafupifupi 10 GB kuchokera pa zomwe zilipo 32. Samalani ndi zigawo zowunikira, zonse zikuwonekera apa. Pachithunzichi panali ogwiritsa ntchito pafupifupi 200 (kupitilira masekondi 60) mu Google Analytics. Pakadali pano, pafupifupi 70% ya njira za ana za PHP-FPM zikadali zopanda ntchito. Izi zikutanthauza kuti PHP-FPM nthawi zonse imayikidwa ku kuchuluka kwazinthu za seva mosasamala kanthu za kuchuluka kwa magalimoto. Kusagwira ntchito kumadikirira kukwera kwa magalimoto ndikuyankha nthawi yomweyo. Simuyenera kudikira mpaka pm adzapanga njira za ana ndikuzithetsa nthawi ikatha pm.process_idle_timeout. Ndinayika mtengo kukhala wapamwamba kwambiri pm.max_requestschifukwa iyi ndi seva yogwira ntchito yopanda kukumbukira kukumbukira mu PHP. Mukhoza kukhazikitsa pm.max_requests = 0 ndi static ngati muli ndi chidaliro chonse muzolemba za PHP zomwe zilipo komanso zamtsogolo. Koma ndi bwino kubwereza malembawo pakapita nthawi. Khazikitsani zopempha zambiri, chifukwa tikufuna kupewa ndalama zosafunikira za pm. Mwachitsanzo, osachepera pm.max_requests = 1000 - kutengera kuchuluka pm.max_children ndi chiwerengero cha zopempha pa sekondi.
Chithunzicho chikuwonetsa lamulo
top -bn1 | grep php-fpm
Nthawi yoti mugwiritse ntchito pm pakufunika komanso kosintha
Ngati mugwiritsa ntchito pm zazikulu, zolakwika ngati izi zimachitika:
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
Yesani kusintha parameter, cholakwikacho sichidzatha, monga
PM zazikulu makamaka zomwe zikufunidwa zitha kukhala zothandiza ngati muli ndi maiwe angapo a PHP-FPM. Mwachitsanzo, mumakhala ndi maakaunti angapo a cPanel kapena mawebusayiti angapo m'mayiwe osiyanasiyana. Ndili ndi seva yokhala ndi, titi, maakaunti 100+ a cpanel ndi madambwe pafupifupi 200, ndipo pm.static kapena dynamic sizingandipulumutse. Zomwe mukufunikira apa ndi zomwe zikufunidwa, pambuyo pa zonse, mawebusayiti opitilira magawo awiri mwa atatu amasamba amalandira anthu ochepa kapena osalandira chilichonse, komanso zomwe zikufunidwa njira zonse za ana zidzagwa, zomwe zidzatipulumutsa kukumbukira zambiri! Mwamwayi, opanga cPanel adazindikira izi ndikuyika mtengo wake kukhala wosasintha zomwe zikufunidwa. Kale, pamene kusakhulupirika anali zazikulu, PHP-FPM sinali yoyenera kwa ma seva otanganidwa omwe amagawana nkomwe. Ambiri agwiritsa ntchito suPHP, chifukwa pm zazikulu kukumbukira kukumbukira ngakhale ndi maiwe opanda pake ndi maakaunti a cPanel PHP-FPM. Mwinamwake, ngati magalimoto ali abwino, simudzakhala nawo pa seva yokhala ndi madzi ambiri a PHP-FPM (kugawana nawo).
Pomaliza
Ngati mukugwiritsa ntchito PHP-FPM ndipo magalimoto anu ndi olemetsa, oyang'anira ndondomeko zomwe zikufunidwa ΠΈ zazikulu kwa PHP-FPM ikhala ndi malire chifukwa cha kuchuluka kwawo. Mvetsetsani dongosolo lanu ndikusintha njira za PHP-FPM molingana ndi kuchuluka kwa seva. Seti yoyamba pm.max_children kutengera kuchuluka kwa pm ntchito zazikulu kapena zomwe zikufunidwa, ndiyeno onjezerani mtengo uwu kufika pamlingo umene kukumbukira ndi pulosesa zidzagwira ntchito popanda kudzaza. Mudzazindikira kuti ndi pm static, popeza mumakumbukira zonse, kuchuluka kwa magalimoto kumapangitsa kuti ma CPU achuluke pang'ono pakapita nthawi, ndipo ma seva ndi kuchuluka kwa CPU kumatha. Kukula kwapakati pa PHP-FPM kumadalira pa seva yapaintaneti ndipo kumafuna kasinthidwe kamanja, kotero oyang'anira machitidwe ambiri amakhala. zazikulu ΠΈ zomwe zikufunidwa - otchuka kwambiri. Ndikukhulupirira kuti nkhaniyi inali yothandiza.
DUP Onjezani benchmark chart
Source: www.habr.com