Kukhazikitsa kwa PHP-FPM: gwiritsani ntchito pm static kuti mugwire bwino ntchito

Kukhazikitsa kwa PHP-FPM: gwiritsani ntchito pm static kuti mugwire bwino ntchito

Nkhani yomwe sinasinthidwe idasindikizidwa poyamba haydenjames.io ndi kusindikizidwa pano ndi chilolezo chake wolemba.

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 mndandanda wathunthu wamalangizo apadziko lonse php-fpm.conf.

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 mndandanda wathunthu wa magawo a processor frequency regulator.

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 force_turbo parameter mu Raspberry Pizomwe gulu la RPi lidzagwiritsa ntchito chowongolera ntchito, pomwe kusintha kwa magwiridwe antchito kudzawoneka bwino chifukwa cha liwiro lotsika la wotchi ya CPU.

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..

Kukhazikitsa kwa PHP-FPM: gwiritsani ntchito pm static kuti mugwire bwino ntchito

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 Linux pamwamba, zosefedwa ndi u (wosuta) ndi lolowera PHP-FPM. Njira zoyambira 50 zokha zomwe zikuwonetsedwa (sindinawerenge ndendende), koma kwenikweni pamwamba zikuwonetsa ziwerengero zapamwamba zomwe zimakwanira pawindo la terminal. M'malo mwake, yasankhidwa ndi % CPU (% CPU). Kuti muwone njira zonse za 100 PHP-FPM, yendetsani 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 zafotokozedwa mu positi iyi pa Serverfault. Pachifukwa ichi, mtengo wa pm.min unali wochepa kwambiri, ndipo popeza kuchuluka kwa magalimoto pa intaneti kumasiyana kwambiri ndipo kumakhala nsonga zazitali ndi zigwa zakuya, n'zovuta kusintha mokwanira pm. zazikulu. Nthawi zambiri pm imagwiritsidwa ntchito zomwe zikufunidwa, monga alangizidwa mu positi yomweyo. Koma izi ndizoyipa kwambiri, chifukwa zomwe zikufunidwa imathetsa njira zopanda ntchito mpaka zero pakakhala kuchuluka kwa magalimoto ochepa kapena kulibe, ndipo mutha kukhala ndi vuto lalikulu lakusintha magalimoto. Pokhapokha, ndithudi, mwakhazikitsa nthawi yaikulu yodikira. Ndiyeno ndi bwino kugwiritsa ntchito pm.static + chiwerengero chachikulu pm.max_requests.

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 ab. Ngati njira za PHP-FPM zili m'mutu, magwiridwe antchito amawonjezeka ndikuwononga kukumbukira komwe amakhala ndikudikirira. Pezani njira yabwino kwambiri nokha.

Kukhazikitsa kwa PHP-FPM: gwiritsani ntchito pm static kuti mugwire bwino ntchito

Source: www.habr.com

Kuwonjezera ndemanga