Cyfeiriadur Erthygl
Ydych chi erioed wedi dod ar draws y sefyllfa hon?Arafodd mynediad gwefan yn sydyn, neu hyd yn oed arwain at wall 500 Ar ôl ailgychwyn PHP-FPM, dychwelodd i normal., ond mae'r broblem yn ailymddangos ar ôl ychydig? Mae hyn mor rhwystredig!
Pam mae hyn yn digwydd?Mewn gwirionedd, mae hyn fel arferNid yw cronfa prosesau PHP-FPM wedi'i ffurfweddu'n iawn, neu nid yw adnoddau'r gweinydd yn ddigonol.achosir gan. Heddiw, byddwn yn gwneud y gorau yn drylwyr HestiaCP Mae PHP-FPM o dan y cwfl yn gwneud y wefan mor sefydlog â chraig!
Y rheswm craidd pam mae PHP-FPM yn cael ei orlwytho
PHP-FPM ynRheolwr Proses, sy'n gyfrifol am drin ceisiadau deinamig. Os nad yw'r ffurfweddiad yn rhesymol, gall arwain at:
- Mae adnoddau gweinydd wedi dod i ben, gan achosi i PHP-FPM fethu ag ymateb i geisiadau newydd mewn modd amserol;
- Rhy ychydig o brosesau, pan fydd traffig yn cynyddu'n sydyn, ni ellir ei brosesu mewn pryd;
- Mae'r defnydd o brosesau yn rhy uchel, gan achosi i'r llwyth CPU ffrwydro.

Sut i ddweud a yw PHP-FPM wedi'i orlwytho?
yn gallu defnyddio top 或 htop Gorchymyn i weld CPU a defnydd cof:
top -c
Os gwelwch wybodaeth proses debyg i'r canlynol, mae'n golygu bod PHP-FPM yn rhedeg o dan lwyth uchel:
1669293 abc 20 0 790284 227880 185568 R 73.1 0.9 1:30.09 php-fpm: pool chenweiliang.com
1669522 abc 20 0 801924 224224 170236 R 69.9 0.9 0:59.01 php-fpm: pool chenweiliang.com
Gweld sut mae'r prosesau hyn yn cymryd dros 70% o'r CPU? Os bydd hyn yn digwydd yn aml, eich PHP-FPM Mae'n rhaid bod problem!
Felly, sut allwn ni optimeiddio'r cyfluniad PHP-FPM fel nad yw'r gweinydd yn cael ei orlwytho mwyach?
Optimeiddio cronfa broses PHP-FPM (addasiad paramedr craidd)
Yn gyntaf, agor php-fpm Ffeiliau Ffurfweddu:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *Newidiwch i'ch fersiwn PHP, fel PHP8.3, a'i newid i hyn:
/etc/php/8.3/fpm/pool.d/www.conf
Ymholi'r fersiwn PHP a osodwyd gan HestiaCP
v-list-web-domain user domain.com
E.g:
v-list-web-domain abc chenweiliang.com
Yn yr allbwn, fe welwch rywbeth fel:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Mae hyn yn golygu bod y safle yn defnyddio PHP 8.3.
Beth am edrych ar eich ffurfweddiad PHP-FPM:
[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660
user = abc
group = abc
pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s
Gallwch weld bod eich pm Yr un a ddefnyddir yw ondemand,Er y gall leihau'r defnydd o adnoddau yn ystod amser segur, pan fydd traffig yn cynyddu'n sydyn, efallai na fydd y broses yn gallu ymateb mewn pryd., gan arwain at wall 500.
www.conf: "Pwll adnoddau cyffredinol" adeiledig y system
Ar ôl gosod PHP-FPM, bydd y system yn rhoi'r wybodaeth i chi'n awtomatig... www.conf ffeil.
EiLleoliMae'n syml iawn—dim ond pwll prosesau diofyn ydyw sy'n gweithio allan o'r bocs, fel arfer ynghlwm wrth... www-data Lawrlwytho defnyddiwr.
Mae'r math hwn o bwll yn arbennig o addas ar gyfer amgylcheddau un safle: mae'r ffurfweddiad yn ysgafn, ac mae'r paramedrau i gyd yn dempledi generig, fel:
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm.max_children = 5
Os mai dim ond un safle rydych chi'n ei gynnal, gallwch ei ddefnyddio'n uniongyrchol ac yn ddibynadwy heb unrhyw drafferth ychwanegol.
etUFO.org.conf: Pwll personol
Unwaith y byddwch chi'n rhedeg sawl safle, ni allwch chi gadw pawb wedi'u gwasgu i'r un pwll.
Ar y pwynt hwn, bydd HestiaCP yn creu pwll ar wahân yn awtomatig ar gyfer pob safle, er enghraifft... etUFO.org.confArbenigol ar gyfer enwau parth etufo.org 服务。
Y ffordd gyffredin o chwarae yw:
- Newid defnyddwyr a grwpiau:
user = etufo,group = etufo - Monitro annibynnol:
listen = /run/php/etufo.sock - Mae addasu nifer y prosesau yn sicrhau sefydlogrwydd cadarn hyd yn oed o dan gydamseredd uchel.
- Mae ffeiliau log ar wahân yn gwneud datrys problemau'n gliriach
Mae'r manteision yn amlwg:Ynysu diogelHyd yn oed os yw un safle wedi'i beryglu, ni fydd y safleoedd eraill yn cael eu heffeithio.
dummy.conf: ffeil ffug
ffug.conf Fel arfer, enghreifftiau neu dempledi a ddarperir gan y system yw'r rhain.
Ni fydd yn rhedeg mewn gwirionedd oni bai eich bod yn ei addasu a'i alluogi â llaw.
Mae ei arwyddocâd yn debycach i "lawlyfr gweithredu," sy'n dweud wrthych sut i ysgrifennu cyfluniad pwll newydd.
Pam rhannu'r pwll?
- 安全 性Defnyddiwch wahanol ddefnyddwyr ar gyfer gwahanol wefannau i osgoi caniatâd sy'n gwrthdaro.
- 性能优化Gellir addasu nifer y prosesau yn unigol ar gyfer pob pwll, gan ganiatáu addasiadau hyblyg yn seiliedig ar y galw traffig.
- YnysuMae logiau, gwallau, a chyfeiriadau gwrando i gyd wedi'u gwahanu, gan wneud datrys problemau'n haws.
Er enghraifft: hyd yn oed www.conf Fe gwympodd.etufo.org.conf Bydd yn dal i redeg fel arfer ac ni fydd yn dod â'r gweinydd cyfan i lawr.
Ystyr geiriau: 实际场景
- Gweinydd un safleMae www.conf yn ddigon.
- Gweinydd aml-safleMae gan bob safle ei ffeil .conf annibynnol ei hun, fel etufo.org.conf.
- ffug.confAt ddibenion cyfeirio yn unig, ni argymhellir.
Cymhariaeth Ffurfweddu
www.conf (pwll diofyn)
[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm = dynamic
pm.max_children = 5
etufo.org.conf (Pwll Personol)
[etufo.org]
user = etufo
group = etufo
listen = /run/php/etufo.sock
pm = dynamic
pm.max_children = 20
access.log = /var/log/php-fpm/etufo.access.log
Y prif wahaniaeth yw:Hunaniaeth defnyddiwr, cyfeiriad gwrando, nifer y prosesau.
1. Addaswch baramedrau pwll proses PHP-FPM
Os yw'r cyfluniad yn defnyddio dynamicMae hwn yn ddull o gychwyn rhai prosesau gwaith ymlaen llaw a'u haddasu'n ddeinamig yn ôl cyfaint y ceisiadau, a all ymateb yn gyflymach pan fydd cyfaint y ceisiadau yn cynyddu'n sydyn.
Ar gyfer gwefannau sydd â swm penodol o draffig, argymhellir defnyddio pm = dynamicOherwydd y gall gynnal nifer penodol o brosesau segur ac osgoi 500 o wallau yn ystod cydamseredd uchel.
Argymhellir ei ddefnyddio dim ond pan fydd y gyfrol mynediad yn isel iawn a'r adnoddau cof yn brin. pm = ondemand I arbed adnoddau.
Awgrymir newid i dynamic, ac optimeiddio pm.max_children A pharamedrau eraill:
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
Pam ydych chi eisiau ei newid fel hyn?
pm = dynamic: Dyrannu prosesau'n fwy hyblyg er mwyn osgoi aros am geisiadau a allai gael ei achosi gan ondemand;pm.max_children = 16: Atal 500 o wallau a achosir gan rhy ychydig o brosesau;pm.start_servers = 5: Osgoi cychwyn proses araf;pm.max_requests = 3000:Atal gollyngiadau cof, ailgylchu'r broses yn rheolaidd.
2. Cyfyngu ar amser gweithredu sgriptiau PHP i atal deiliadaeth hirdymor
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
Gall hyn atal rhaiGall sgriptiau PHP sy'n defnyddio gormod o CPU ddod â'ch gweinydd i lawr.
Ar ôl arbed, ailgychwynwch y broses PHP:
sudo systemctl restart php8.3-fpmGalluogi monitro statws PHP-FPM i gadw golwg ar y cynnydd ar unrhyw adeg
Galluogi monitro proses PHP-FPM a'i weld ar unrhyw adegNifer presennol o brosesau gweithredol a cais am statws aros, er mwyn osgoi gorlwytho gweinydd.
在 php-fpm.conf Wedi'i ychwanegu yn:
pm.status_path = /status
Yna, cyfluniad Nginx:
location /status {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
Yn y modd hwn, gallwch chi http://yourdomain.com/status Edrychwch ar PHP-FPM ar waith!
Optimeiddio logiau PHP-FPM i ddatrys problemau yn gyflym
在 php-fpm.conf Ychwanegu at:
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s ; 执行超过 5s 的脚本记录到日志
Yn y modd hwn, pryd bynnag y bydd gwall 500 yn digwydd, gallwch weld y log yn uniongyrchol:
tail -f /var/log/php-fpm/error.log
Gweld a yw PHP yn adrodd am wall, megis out of memory,script execution timeout Arhoswch.
Ailgychwyn PHP-FPM yn rheolaidd i atal gollyngiadau cof
gallu pasio cron Ailgychwyn PHP-FPM yn rheolaidd i atal prosesau hirsefydlog rhag achosiGollyngiadau Cof.
crontab -e
Ychwanegwch y dasg a drefnwyd ganlynol i ailgychwyn PHP-FPM yn awtomatig am 3 am bob dydd:
0 3 * * * /usr/sbin/service php8.3-fpm restart
Beth os bydd y broblem yn parhau? Optimeiddio pellach!
Os ydych chi'n dal i ddilyn yr optimeiddio uchodO bryd i'w gilydd bydd 500 o wallau'n digwydd, gallwch barhau gyda'r optimizations canlynol:
1. Galluogi OPcache i wella effeithlonrwydd gweithredu PHP
Os nad yw OPcache wedi'i alluogi eto, gallwch ei osod fel hyn (gan ddefnyddio Ubuntu fel enghraifft):
sudo apt install php8.3-opcache -y
Yna golygu php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0
- opcache.validate_timestamps=0
- Analluogi canfod amser realLleihau Mewnbwn/Allbwn system ffeiliau a gwella perfformiad.
Fodd bynnag, mae hyn yn golygu bod yn rhaid i chi glirio'r storfa â llaw (ailgychwyn y gwasanaeth PHP) ar ôl addasu ffeiliau PHP.
Ar ôl addasu'r ffurfweddiad, rhaid i chi ailgychwyn y gwasanaeth PHP er mwyn i'r newidiadau ddod i rym.
sudo systemctl restart php<版本>-fpmEffaith? Mae cyflymder gweithredu tudalen PHP wedi'i wella'n fawr!
2. Optimization cyfluniad Nginx
Sicrhewch fod paramedrau cysylltiedig Nginx yn rhesymol, megis fastcgi_read_timeout Addaswch ef yn briodol er mwyn osgoi terfynu sgriptiau PHP gan Nginx oherwydd amser gweithredu hir:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
Crynodeb: Optimeiddiwch PHP-FPM ac ni fydd y wefan yn chwalu mwyach!
Pa addasiadau ydyn ni wedi'u gwneud ar ôl yr optimeiddio hwn?
✅ Optimeiddio'r gronfa broses PHP-FPM, defnyddio ondemandAc optimeiddio pm.max_children paramedr;
✅ Cyfyngu ar amser gweithredu sgriptiau PHP, i atal galwedigaeth CPU hirdymor;
✅ Galluogi monitro PHP-FPM, gweld llwyth y broses mewn amser real;
✅ Optimeiddio logiau PHP-FPM, datrys problemau 500 o wallau yn gyflym;
✅ Ailgychwyn PHP-FPM yn rheolaidd, atal gollyngiadau cof;
✅ Galluogi OPcache, gwella effeithlonrwydd gweithredu PHP;
✅ Optimeiddio Ffurfweddiad Nginx, er mwyn osgoi problemau goramser.
Ar ôl yr optimeiddio hwn, bydd y llwyth PHP-FPM yn cael ei leihau'n fawr a bydd gweithrediad y wefan yn fwy sefydlog! 🔥
Ewch i roi cynnig arni nawr! 💪🚀
Blog Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ ) a rennir "Mae llwyth HestiaCP PHP-FPM yn rhy uchel? Gwall tudalen we deinamig 500? Bydd yr optimeiddio hwn yn dod i rym ar unwaith! ”, gallai fod o gymorth i chi.
Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-32512.html
