Usanidi wa PHP-FPM: tumia pm tuli kwa utendaji wa juu zaidi

Usanidi wa PHP-FPM: tumia pm tuli kwa utendaji wa juu zaidi

Toleo ambalo halijahaririwa la makala haya lilichapishwa hapo awali haydenjames.io na kuchapishwa hapa kwa idhini yake mwandishi.

Nitakuambia kwa ufupi jinsi bora ya kusanidi PHP-FPM ili kuongeza upitishaji, kupunguza muda, na kutumia CPU na kumbukumbu mara kwa mara. Kwa chaguo-msingi, laini ya PM (mchakato wa meneja) katika PHP-FPM ni nguvu, na ikiwa huna kumbukumbu ya kutosha, basi ni bora kufunga juu ya mahitaji. Wacha tulinganishe chaguzi 2 za udhibiti kulingana na hati za php.net na tuone jinsi nipendavyo hutofautiana nao. tuli pm kwa trafiki ya sauti kubwa:

pm = nguvu - idadi ya michakato ya mtoto imesanidiwa kwa nguvu kulingana na maagizo yafuatayo: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = mahitaji - michakato huundwa kwa mahitaji (kinyume na uundaji wa nguvu, wakati pm.start_servers zinazinduliwa wakati huduma inapoanza).
pm = tuli - idadi ya michakato ya mtoto imewekwa na inaonyeshwa na parameta pm.max_children.

Kwa maelezo, tazama orodha kamili ya maagizo ya kimataifa php-fpm.conf.

Kufanana kati ya meneja wa mchakato wa PHP-FPM na kidhibiti cha masafa ya CPU

Hii inaweza kuonekana kuwa nje ya mada, lakini nitaunganisha hii na mada ya usanidi wa PHP-FPM. Ni nani ambaye hajakumbana na kushuka kwa kichakataji angalau mara moja - kwenye kompyuta ndogo, mashine pepe au seva maalum. Je, unakumbuka kuongeza kasi ya mzunguko wa CPU? Chaguzi hizi zinapatikana kwa nix na Windows zinaweza kuboresha utendakazi wa mfumo na uwajibikaji kwa kubadilisha mpangilio wa kichakataji kutoka juu ya mahitaji juu ya utendaji*. Wakati huu, hebu tulinganishe maelezo na tuangalie kufanana:

gavana=mahitaji β€” kuongeza nguvu ya mzunguko wa kichakataji kulingana na mzigo wa sasa. Huruka kwa kasi hadi masafa ya juu zaidi na kisha huipunguza kadiri vipindi vya kutofanya kazi vinavyoongezeka.
gavana=kihafidhina= kuongeza kasi ya mzunguko kulingana na mzigo wa sasa. Huongeza na kupunguza marudio kwa urahisi zaidi kuliko mahitaji.
Gavana = utendaji - frequency ni ya juu kila wakati.

Kwa maelezo, tazama orodha kamili ya vigezo vya mdhibiti wa mzunguko wa processor.

Unaona kufanana? Nilitaka kuonyesha ulinganisho huu ili kukushawishi kuwa ni bora kutumia pm tuli kwa PHP-FPM.

Kwa parameter ya mdhibiti wa processor utendaji husaidia kuongeza utendakazi kwa usalama kwa sababu karibu inategemea kikomo cha CPU cha seva. Kwa kuongezea hii, kwa kweli, pia kuna mambo kama vile joto, malipo ya betri (kwenye kompyuta ndogo) na athari zingine za kuendesha processor kila wakati kwa 100%. Mpangilio wa utendakazi huhakikisha utendakazi wa kichakataji haraka zaidi. Soma, kwa mfano, kuhusu force_turbo parameta katika Raspberry Piambayo jopo la RPi litatumia kidhibiti utendaji, ambapo uboreshaji wa utendaji utaonekana zaidi kutokana na kasi ya chini ya saa ya CPU.

Kutumia pm tuli kufikia utendakazi wa juu zaidi wa seva

Chaguo la PHP-FPM pm tuli kwa kiasi kikubwa inategemea kumbukumbu ya bure kwenye seva. Ikiwa kumbukumbu ni ya chini, ni bora kuchagua juu ya mahitaji au nguvu. Kwa upande mwingine, ikiwa una kumbukumbu, unaweza kuzuia meneja wa mchakato wa PHP kwa kuweka pm tuli kwa kiwango cha juu cha uwezo wa seva. Kwa maneno mengine, ikiwa kila kitu kinahesabiwa vizuri, unahitaji kuanzisha pm.tuli kwa kiwango cha juu cha michakato ya PHP-FPM inayoweza kutekelezwa, bila kuunda matatizo na kumbukumbu ya chini au cache. Lakini sio juu sana hivi kwamba inalemea wasindikaji na kukusanya rundo la shughuli za PHP-FPM zinazosubiri kutekelezwa..

Usanidi wa PHP-FPM: tumia pm tuli kwa utendaji wa juu zaidi

Katika picha ya skrini hapo juu, seva ina pm = tuli na pm.max_children = 100, na hii inachukua takriban GB 10 kati ya 32 zinazopatikana. Zingatia safu wima zilizoangaziwa, kila kitu kiko wazi hapa. Katika picha hii ya skrini kulikuwa na takriban watumiaji 200 amilifu (zaidi ya sekunde 60) katika Google Analytics. Katika kiwango hiki, takriban 70% ya michakato ya watoto ya PHP-FPM bado haijafanya kazi. Hii inamaanisha kuwa PHP-FPM huwekwa kila wakati hadi kiwango cha juu zaidi cha rasilimali za seva bila kujali trafiki ya sasa. Mchakato wa kutofanya kazi husubiri kilele cha trafiki na hujibu papo hapo. Huna budi kusubiri hadi pm itaunda michakato ya watoto na kisha kuikomesha kipindi kitakapoisha pm.process_idle_timeout. Nimeweka thamani hadi juu sana pm.max_requestskwa sababu hii ni seva inayofanya kazi bila uvujaji wa kumbukumbu katika PHP. Unaweza kusakinisha pm.max_requests = 0 na tuli ikiwa unajiamini kabisa katika hati zilizopo na za baadaye za PHP. Lakini ni bora kurudisha maandishi kwa wakati. Weka idadi kubwa ya maombi, kwa sababu tunataka kuepuka gharama zisizo za lazima za pm. Kwa mfano, angalau pm.max_requests = 1000 - kulingana na wingi pm.max_children na idadi ya maombi kwa sekunde.

Picha ya skrini inaonyesha amri Linux juu, iliyochujwa na u (mtumiaji) na jina la mtumiaji la PHP-FPM. Taratibu 50 za kwanza pekee ndizo zimeonyeshwa (sikuhesabu haswa), lakini kimsingi top inaonyesha takwimu za juu ambazo zinafaa kwenye dirisha la terminal. Katika hali hii imepangwa kwa % CPU (%CPU). Ili kuona michakato yote 100 ya PHP-FPM, endesha amri:

top -bn1 | grep php-fpm

Wakati wa kutumia pm mahitaji na nguvu

Ukitumia pm nguvu, makosa kama haya hutokea:

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

Jaribu kubadilisha parameter, kosa halitaondoka, kama ilivyoelezwa katika chapisho hili kwenye Serverfault. Katika kesi hii, thamani ya pm.min ilikuwa ndogo sana, na kwa kuwa trafiki ya wavuti inatofautiana sana na ina vilele vya juu na mabonde ya kina, ni vigumu kurekebisha vya kutosha pm. nguvu. Kawaida pm hutumiwa juu ya mahitaji, kama ilivyoshauriwa katika chapisho lile lile. Lakini hii ni mbaya zaidi, kwa sababu juu ya mahitaji husitisha michakato ya kutofanya kazi hadi sifuri wakati kuna trafiki kidogo au hakuna, na bado utaishia na mabadiliko makubwa ya trafiki. Isipokuwa, bila shaka, umeweka muda mkubwa wa kusubiri. Na kisha ni bora kutumia pm.tuli + nambari ya juu pm.max_requests.

PM nguvu na haswa juu ya mahitaji inaweza kukusaidia ikiwa una mabwawa mengi ya PHP-FPM. Kwa mfano, unakaribisha akaunti nyingi za cPanel au tovuti nyingi kwenye mabwawa tofauti. Nina seva iliyo na, tuseme, akaunti 100+ za cpanel na vikoa takriban 200, na pm.static au hata dynamic haingeniokoa. Unachohitaji hapa ni juu ya mahitaji, baada ya yote, zaidi ya theluthi mbili ya tovuti hupokea trafiki kidogo au hakuna kabisa, na kwa juu ya mahitaji michakato yote ya watoto itaanguka, ambayo itatuokoa kumbukumbu nyingi! Kwa bahati nzuri, watengenezaji wa cPanel waligundua hili na kuweka thamani kuwa chaguo-msingi juu ya mahitaji. Hapo awali, wakati chaguo-msingi ilikuwa nguvu, PHP-FPM haikufaa kwa seva zilizoshirikiwa zenye shughuli nyingi hata kidogo. Wengi wametumia suPHP, kwa sababu pm nguvu kumbukumbu zinazotumiwa hata kwa mabwawa ya kufanya kazi na akaunti za cPanel PHP-FPM. Uwezekano mkubwa zaidi, ikiwa trafiki ni nzuri, hutapangishwa kwenye seva yenye idadi kubwa ya mabwawa ya PHP-FPM (ukaribishaji wa pamoja).

Hitimisho

Ikiwa unatumia PHP-FPM na trafiki yako ni nzito, wasimamizi wa mchakato juu ya mahitaji ΠΈ nguvu kwa PHP-FPM itakuwa na upitishaji mdogo kutokana na uendeshaji wao wa asili. Elewa mfumo wako na usanidi michakato ya PHP-FPM kulingana na uwezo wa juu wa seva. Seti ya kwanza pm.max_children kulingana na upeo wa matumizi pm nguvu au juu ya mahitaji, na kisha uongeze thamani hii kwa kiwango ambacho kumbukumbu na processor itafanya kazi bila kupakiwa. Utagundua hilo na pm tuli, kwa kuwa una kila kitu kwenye kumbukumbu, miiba ya trafiki itasababisha kuongezeka kwa CPU kwa muda, na wastani wa upakiaji wa seva na CPU utatoka. Saizi ya wastani ya mchakato wa PHP-FPM inategemea seva ya wavuti na inahitaji usanidi wa mwongozo, kwa hivyo wasimamizi wa mchakato wa kiotomatiki zaidi nguvu ΠΈ juu ya mahitaji - maarufu zaidi. Natumaini makala ilikuwa muhimu.

DUP Chati ya benchmark imeongezwa ab. Ikiwa michakato ya PHP-FPM iko kwenye kumbukumbu, utendaji huongezeka kwa gharama ya utumiaji wa kumbukumbu mahali wanapokaa na kungojea. Tafuta chaguo bora kwako mwenyewe.

Usanidi wa PHP-FPM: tumia pm tuli kwa utendaji wa juu zaidi

Chanzo: mapenzi.com

Kuongeza maoni