PHP-FPM teeb: siv pm zoo li qub rau kev ua haujlwm siab tshaj plaws

PHP-FPM teeb: siv pm zoo li qub rau kev ua haujlwm siab tshaj plaws

Ib qho unedited version ntawm tsab xov xwm no yog thawj zaug luam tawm rau haydenjames.io ua thiab luam tawm ntawm no nrog nws tso cai tus sau.

Kuv mam li qhia rau koj hauv cov ntsiab lus tseem ceeb yuav ua li cas zoo tshaj plaws rau kev teeb tsa PHP-FPM kom nce kev nkag mus, txo qis latency, thiab siv CPU thiab lub cim xeeb ntau ntxiv. Los ntawm lub neej ntawd, PM (tus thawj tswj txheej txheem) kab hauv PHP-FPM yog dynamic, thiab yog tias koj tsis muaj lub cim xeeb txaus, ces nws yog qhov zoo dua rau nruab ondemand. Cia wb sib piv 2 kev xaiv tswj raws li cov ntaub ntawv php.net thiab saib seb kuv nyiam qhov txawv ntawm lawv li cas zoo li qub pm rau cov tsheb khiav ceev:

pm = dynamic - Tus naj npawb ntawm cov txheej txheem me nyuam raug teeb tsa dynamically raws li cov lus qhia hauv qab no: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = xav - cov txheej txheem raug tsim los ntawm kev thov (raws li qhov tsis zoo rau kev tsim tawm, thaum pm.start_servers tau pib thaum qhov kev pabcuam pib).
pm = zoo - Tus naj npawb ntawm cov txheej txheem me nyuam raug kho thiab raug qhia los ntawm qhov ntsuas pm.max_cov me nyuam.

Yog xav paub ntxiv, saib ua kom tiav cov npe ntawm cov lus qhia thoob ntiaj teb php-fpm.conf.

Zoo sib xws ntawm PHP-FPM tus thawj tswj txheej txheem thiab CPU zaus tswj

Qhov no yuav zoo li offtopic, tab sis kuv yuav txuas qhov no mus rau lub ntsiab lus ntawm PHP-FPM configuration. Leej twg tsis tau ntsib lub processor qeeb tsawg kawg ib zaug - ntawm lub laptop, lub tshuab virtual lossis cov neeg rau zaub mov tshwj xeeb? Nco ntsoov CPU zaus scaling? Cov kev xaiv no muaj rau nix thiab Windows tuaj yeem txhim kho qhov kev ua tau zoo thiab kev ua haujlwm los ntawm kev hloov pauv lub kaw lus processor los ntawm ondemand rau kev ua haujlwm *. Lub sijhawm no, cia peb piv cov lus piav qhia thiab saib qhov zoo sib xws:

Governor=ondemand - dynamic scaling ntawm processor zaus nyob ntawm qhov load tam sim no. Kev dhia nrawm mus rau qhov siab tshaj plaws thiab tom qab ntawd txo nws thaum lub sijhawm tsis ua haujlwm nce.
Governor=conservative= dynamic zaus scaling nyob ntawm qhov load tam sim no. Nce thiab txo qhov zaus ntau smoothly dua ondemand.
Governor = kev ua haujlwm - zaus yog qhov siab tshaj plaws.

Yog xav paub ntxiv, saib tag nrho cov npe ntawm processor zaus regulator tsis.

Pom qhov zoo sib xws? Kuv xav qhia qhov kev sib piv no kom ntseeg tau tias nws yog qhov zoo tshaj plaws los siv pm zoo rau PHP-FPM.

Rau lub processor regulator parameter kev ua tau zoo pab kom muaj kev nyab xeeb nce kev ua tau zoo vim nws yuav luag tag nrho nyob ntawm tus neeg rau zaub mov CPU txwv. Ntxiv rau qhov no, tau kawg, kuj tseem muaj cov yam ntxwv xws li kub, roj teeb (hauv lub laptop) thiab lwm yam kev mob tshwm sim los ntawm kev ua haujlwm tas li ntawm lub processor ntawm 100%. Kev teeb tsa kev ua tau zoo ua kom muaj kev ua haujlwm ceev tshaj plaws ntawm processor. Nyeem, piv txwv li, txog force_turbo parameter hauv Raspberry Pi, uas RPi vaj huam sib luag yuav siv lub regulator kev ua tau zoo, qhov twg qhov kev txhim kho kev ua tau zoo yuav pom ntau dua vim qhov qis CPU moos ceev.

Siv pm zoo li qub kom ua tiav kev ua haujlwm siab tshaj plaws ntawm server

PHP-FPM kev xaiv pm zoo feem ntau nyob ntawm lub cim xeeb dawb ntawm lub server. Yog tias nco tsawg, nws yog qhov zoo dua los xaiv ondemand los yog dynamic. Ntawm qhov tod tes, yog tias koj muaj lub cim xeeb, koj tuaj yeem zam tus thawj tswj hwm txheej txheem PHP nyiaj siv ua haujlwm los ntawm kev teeb tsa pm zoo li qub mus rau lub siab tshaj plaws neeg rau zaub mov muaj peev xwm. Hauv lwm lo lus, yog tias txhua yam suav tau zoo, koj yuav tsum tau tsim pm static mus rau qhov siab tshaj plaws ntim ntawm PHP-FPM cov txheej txheem uas tuaj yeem ua tiav, tsis tsim teeb meem nrog lub cim xeeb tsawg lossis cache. Tab sis tsis yog siab heev uas nws overwhelms cov processors thiab accumulates ib pawg ntawm PHP-FPM cov hauj lwm tos kom tua..

PHP-FPM teeb: siv pm zoo li qub rau kev ua haujlwm siab tshaj plaws

Hauv qhov screenshot saum toj no, lub server muaj pm = static thiab pm.max_children = 100, thiab qhov no yuav siv li ntawm 10 GB tawm ntawm qhov muaj 32. Ua tib zoo saib rau cov kab lus tseem ceeb, txhua yam yog qhov tseeb ntawm no. Hauv qhov screenshot no muaj kwv yees li 200 tus neeg siv nquag (ntau dua 60 vib nas this) hauv Google Analytics. Nyob rau theem no, kwv yees li 70% ntawm PHP-FPM cov txheej txheem me nyuam tseem tsis tau ua haujlwm. Qhov no txhais tau hais tias PHP-FPM ib txwm teem rau qhov siab tshaj plaws ntawm cov neeg siv khoom siv tsis hais txog kev khiav tsheb tam sim no. Cov txheej txheem tsis ua haujlwm tos kom muaj tsheb khiav ceev thiab teb tam sim ntawd. Koj tsis tas yuav tos kom txog thaum pm yuav tsim cov txheej txheem menyuam yaus thiab tom qab ntawd txiav lawv thaum lub sijhawm tas sijhawm pm.process_idle_timeout. Kuv teeb tus nqi kom siab heev pm.max_requestsvim qhov no yog ib tug neeg rau zaub mov ua hauj lwm uas tsis muaj lub cim xeeb leaks hauv PHP. Koj tuaj yeem nruab pm.max_requests = 0 nrog zoo li qub yog tias koj muaj kev ntseeg siab hauv cov ntawv PHP uas twb muaj lawm thiab yav tom ntej. Tab sis nws yog qhov zoo dua los rov ua cov ntawv sau rau lub sijhawm. Teem ntau qhov kev thov, vim peb xav kom tsis txhob muaj cov nqi teev tsaus ntuj. Piv txwv li, tsawg kawg pm.max_requests = 1000 - nyob ntawm seb muaj pes tsawg pm.max_cov me nyuam thiab tus naj npawb ntawm kev thov ib ob.

Lub screenshot qhia cov lus txib Linux saum, lim los ntawm u (neeg siv) thiab PHP-FPM username. Tsuas yog thawj 50 los yog li cov txheej txheem tau qhia (Kuv tsis suav raws nraim), tab sis qhov tseem ceeb tshaj plaws qhia cov txheeb cais saum toj kawg nkaus uas haum rau lub qhov rais davhlau ya nyob twg. Hauv qhov no txheeb los ntawm % CPU (% CPU). Txhawm rau pom tag nrho 100 PHP-FPM cov txheej txheem, khiav cov lus txib:

top -bn1 | grep php-fpm

Thaum siv pm ondemand thiab dynamic

Yog koj siv pm dynamic, yuam kev zoo li no tshwm sim:

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

Sim hloov qhov parameter, qhov yuam kev yuav tsis ploj mus, zoo li tau piav nyob rau hauv no ncej ntawm Serverfault. Nyob rau hauv cov ntaub ntawv no, tus nqi pm.min tsawg dhau lawm, thiab txij li lub vev xaib tsheb sib txawv heev thiab muaj cov peaks siab thiab qhov tob tob, nws yog qhov nyuaj rau kev kho kom txaus. dynamic. Feem ntau yog siv pm ondemand, raws li qhia nyob rau hauv tib ncej. Tab sis qhov no tseem phem dua, vim ondemand terminates idle processes mus rau xoom thaum muaj me me los yog tsis muaj tsheb khiav, thiab koj tseem yuav xaus nrog cov nyiaj siv ua haujlwm ntawm kev hloov tsheb. Tshwj tsis yog, tau kawg, koj teem sijhawm tos loj heev. Thiab tom qab ntawd nws yog qhov zoo dua los siv pm static + tus lej siab pm.max_requests.

PM dynamic thiab tshwj xeeb tshaj yog ondemand tuaj yeem ua tau yooj yim yog tias koj muaj ntau lub pas dej PHP-FPM. Piv txwv li, koj tuav ntau tus account cPanel lossis ntau lub vev xaib hauv cov pas dej sib txawv. Kuv muaj ib tus neeg rau zaub mov nrog, hais, 100+ cpanel accounts thiab txog 200 tus thawj, thiab pm.static lossis txawm tias dynamic yuav tsis cawm kuv. Txhua yam koj xav tau ntawm no yog ondemand, tom qab tag nrho, ntau tshaj li ob feem peb ntawm cov vev xaib tau txais me me lossis tsis muaj tsheb khiav, thiab nrog ondemand tag nrho cov txheej txheem me nyuam yuav poob, uas yuav cawm peb ntau lub cim xeeb! Hmoov zoo, cov neeg tsim khoom cPanel pom qhov no thiab teeb tsa tus nqi rau lub neej ntawd ondemand. Yav dhau los, thaum lub neej ntawd yog dynamic, PHP-FPM tsis haum rau tibneeg hu tauj coob sib koom servers txhua. Ntau tau siv suPHP,,vim pm dynamic siv lub cim xeeb txawm tias tsis muaj pas dej ua ke thiab cPanel PHP-FPM cov nyiaj. Feem ntau, yog tias cov tsheb khiav zoo, koj yuav tsis tau tuav ntawm lub server nrog ntau tus PHP-FPM pas dej (sib koom hosting).

xaus

Yog tias koj siv PHP-FPM thiab koj cov tsheb khiav hnyav, cov txheej txheem tswj xyuas ondemand ΠΈ dynamic rau PHP-FPM yuav raug txwv kev hla dhau vim lawv qhov nyiaj siv ua haujlwm. Nkag siab koj lub kaw lus thiab teeb tsa PHP-FPM cov txheej txheem raws li qhov muaj peev xwm ntawm cov neeg rau zaub mov siab tshaj plaws. Thawj txheej pm.max_cov me nyuam nyob ntawm qhov siab tshaj plaws pm siv dynamic los yog ondemand, thiab tom qab ntawd nce tus nqi no mus rau theem uas lub cim xeeb thiab processor yuav ua haujlwm yam tsis muaj overloaded. Koj yuav pom tias nrog pm zoo, txij li thaum koj muaj txhua yam nyob rau hauv lub cim xeeb, tsheb khiav spikes yuav ua rau tsawg dua CPU spikes lub sij hawm, thiab server thiab CPU load nruab nrab yuav theem tawm. Qhov nruab nrab PHP-FPM txheej txheem loj nyob ntawm lub web server thiab xav tau kev teeb tsa ntawm phau ntawv, yog li ntau tus thawj tswj hwm txheej txheem yog dynamic ΠΈ ondemand - nrov dua. Kuv vam tias tsab xov xwm no muaj txiaj ntsig.

DUP Ntxiv cov qauv ntsuas ab. Yog tias cov txheej txheem PHP-FPM nyob rau hauv lub cim xeeb, kev ua tau zoo nce ntawm qhov kev siv lub cim xeeb uas lawv zaum thiab tos. Nrhiav qhov kev xaiv zoo tshaj rau koj tus kheej.

PHP-FPM teeb: siv pm zoo li qub rau kev ua haujlwm siab tshaj plaws

Tau qhov twg los: www.hab.com

Ntxiv ib saib