I-HestiaCP PHP-FPM iphantsi komthwalo onzima? Iphepha lewebhu elinamandla 500 impazamo? Oku kulungiswa kuya kusebenza kwangoko!

Ngaba wakha wadibana nale meko? Iwebhusayithi yakho iyehla ngequbuliso, okanye iphosa impazamo engama-500. Ukuqalisa kwakhona i-PHP-FPM kuyibuyisela kwisimo sayo sesiqhelo , kodwa ingxaki iphinda ivele emva kwexesha elithile? Iyacaphukisa kakhulu!

Kutheni oku kusenzeka? Enyanisweni, oku kubangelwa kukucwangciswa okungafanelekanga kwe-PHP-FPM process pool okanye ukungonelanga kwezixhobo zeseva . Namhlanje, siza kuyiphucula ngokupheleleyo i-PHP-FPM phantsi kweHestiaCP ukuqinisekisa uzinzo oluqinileyo lwewebhusayithi yakho!

Esona sizathu singundoqo sokuba kutheni i-PHP-FPM igcwele kakhulu

I-PHP-FPM ngumphathi wenkqubo ye-PHP , onoxanduva lokusingatha izicelo eziguqukayo. Uqwalaselo olungafanelekanga lunokukhokelela ku:

  • Izixhobo zeseva ziphelile, okubangela ukuba i-PHP-FPM ingakwazi ukuphendula kwizicelo ezitsha ngexesha elifanelekileyo;
  • Iinkqubo ezimbalwa kakhulu, xa i-traffic inyuka ngokukhawuleza, ayikwazi ukuqhutyelwa phambili ngexesha;
  • Ukusetyenziswa kwenkqubo kuphezulu kakhulu, ebangela ukuba umthwalo we-CPU uqhume.

I-HestiaCP PHP-FPM iphantsi komthwalo onzima? Iphepha lewebhu elinamandla 500 impazamo? Oku kulungiswa kuya kusebenza kwangoko!

Uxela njani ukuba i-PHP-FPM igcwele kakhulu?

Ungasebenzisa top Okanye htop Umyalelo wokujonga i-CPU kunye nokusetyenziswa kwememori:

top -c

Ukuba ubona ulwazi lwenkqubo efana nokulandelayo, oko kuthetha ukuba i-PHP-FPM isebenza phantsi komthwalo ophezulu:

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

Ngaba uyazibona ezi nkqubo zisebenzisa ngaphezulu kwe-70% ye-CPU? Ukuba oku kwenzeka rhoqo, ngokuqinisekileyo kukho into engalunganga nge -PHP-FPM yakho!

Ke, singayenza njani i-PHP-FPM uqwalaselo ukuze umncedisi angabe esagcwala?

PHP-FPM inkqubo pool optimization (uhlengahlengiso iparameter engundoqo)

Okokuqala, vula php-fpm Iifayile zoqwalaselo:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Tshintshela kwinguqulelo yakho ye-PHP, efana ne-PHP8.5, kwaye uyitshintshele kule:/etc/php/8.3/fpm/pool.d/www.conf

Buza inguqulo ye-PHP esetwe nguHestiaCP

v-list-web-domain user domain.com

Isb:

v-list-web-domain abc chenweiliang.com

Kwimveliso, uya kubona into efana nale:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.5 

Oku kubonisa ukuba iwebhusayithi isebenzisa i-PHP 8.5.

Makhe sijonge kuqwalaselo lwakho lwe-PHP-FPM:

[chenweiliang.com]
listen = /run/php/php8.5-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

Uyabona ke wena pm Lowo usetyenziswayo ngu ondemand,Nangona inokunciphisa ukusetyenziswa kwezixhobo ngexesha lokungasebenzi, xa i-traffic inyuka ngokukhawuleza, inkqubo ayinakukwazi ukuphendula ngexesha., okukhokelela kwimpazamo engama-500.

www.conf: "Ichibi lezixhobo elibanzi" elakhelwe ngaphakathi kwinkqubo

Emva kokufaka i-PHP-FPM, inkqubo iya kukunika ngokuzenzekelayo... www.conf ifayile.
YayoUkubekwa endaweniKulula kakhulu—lichibi lenkqubo emiselweyo elisebenza ngokuphuma ebhokisini, elihlala liqhotyoshelwe... www-data Ukhuphelo lomsebenzisi.

Olu hlobo lwedama lokubhukuda lufanelekile ngokukodwa kwiindawo ezinendawo enye: uqwalaselo lulula, kwaye zonke iiparameter ziyitemplate eziqhelekileyo, ezifana nezi:

user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm.max_children = 5

Ukuba ubamba indawo enye kuphela, ungayisebenzisa ngokuthe ngqo nangokuthembekileyo ngaphandle kwengxaki eyongezelelweyo.

etufo.org.conf: Ichibi elenziwe ngokwezifiso

Wakuba usebenzisa iiwebhusayithi ezininzi, awunakugcina wonke umntu exinene kwindawo enye.
Okwangoku, iHestiaCP iza kudala ngokuzenzekelayo ichibi elahlukileyo kwindawo nganye, umzekelo... etufo.org.confYenzelwe amagama eedomeyini etufo.org

Indlela eqhelekileyo yokudlala yile:

  • Tshintsha abasebenzisi kunye namaqela:user = etufo,group = etufo
  • Ukubeka iliso ngokuzimeleyo:listen = /run/php/etufo.sock
  • Ukulungisa inani leenkqubo kuqinisekisa uzinzo oluqinileyo nokuba phantsi kweemeko ezifanayo.
  • Iifayile zelogi ezahlukeneyo zenza ukusombulula iingxaki kube lula.

Iingenelo zicacile: ukwahlukana okukhuselekileyo . Nokuba indawo enye isengozini, ezinye azichaphazeleki.

i-dummy.conf: ifayile ye-dummy

i-dummy.conf Ezi zihlala ziyimizekelo okanye iitemplate ezibonelelwa yinkqubo.
Ayizukusebenza ngaphandle kokuba uyiguqula ngesandla kwaye uyivule.
Ukubaluleka kwayo kufana "nencwadi yemiyalelo yokusebenza," ekuxelela indlela yokubhala uqwalaselo olutsha lwedama lokuqubha.

Kutheni kuhlulwa ichibi?

  • 安全 性Sebenzisa abasebenzisi abahlukeneyo kwiindawo ezahlukeneyo ukuze uphephe iimvume ezingqubanayo.
  • 性能优化Inani leenkqubo lingalungiswa ngokwahlukeneyo kwidama ngalinye, okuvumela uhlengahlengiso oluguquguqukayo olusekelwe kwimfuno yendlela.
  • Ukubekwa wedwaIilog, iimpazamo, kunye needilesi zokumamela zonke zahlulwe, nto leyo eyenza ukusombulula iingxaki kube lula.

Umzekelo, nokuba i-www.conf iphazamiseka, i-etufo.org.conf iza kuqhubeka isebenza ngendlela eqhelekileyo kwaye ayizukuyiwisa yonke iseva.

实际场景

  • Iseva yendawo enye: www.conf yanele.
  • Iseva yeendawo ezininziIndawo nganye inefayile yayo ezimeleyo ye-.conf, efana ne-etufo.org.conf.
  • i-dummy.confAkukhuthazwa ukuba uyisebenzise njengereferensi kuphela.

Uthelekiso loBume

www.conf (idama elimiselweyo)

[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm = dynamic
pm.max_children = 5

etufo.org.conf (Ichibi elenziwe ngokwezifiso)

[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

Umahluko ophambili ngulo: ubuwena bomsebenzisi, idilesi yokumamela, kunye nenani leenkqubo.

1. Lungisa iparameters zenkqubo ye-PHP-FPM

Ukuba uqwalaselo lusebenzisa dynamicLe yindlela yokuqalisa kwangaphambili ezinye iinkqubo zomsebenzi kunye nokulungelelanisa ngokuguquguqukayo ngokomthamo wesicelo, onokuphendula ngokukhawuleza xa umthamo wesicelo usanda ngokukhawuleza.

Kwiiwebhusayithi ezinomlinganiselo othile wetrafikhi, kuyacetyiswa ukuba usebenzise pm = dynamicNgenxa yokuba inokugcina inani elithile leenkqubo ezingasebenziyo kwaye igweme iimpazamo ze-500 ngexesha le-concurrency ephezulu.

Kucetyiswa ukuba uyisebenzise kuphela xa umthamo wofikelelo uphantsi kakhulu kwaye izixhobo zememori ziqinile. pm = ondemand Ukugcina izixhobo.

Cebisa ukuba utshintshele ku dynamic, kunye nokwandisa pm.max_children kunye nezinye iiparameters:

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 后自动退出

Kutheni ufuna ukuyitshintsha ngolu hlobo?

  • pm = dynamic: Nikeza iinkqubo ngokulula ngakumbi ukuphepha ukulinda okunokuthi kubangwe kukufuna;
  • pm.max_children = 16: Thintela iimpazamo ezingama-500 ezibangelwa ziinkqubo ezimbalwa kakhulu;
  • pm.start_servers = 5: Kuphephe ukuqalisa inkqubo ecothayo;
  • pm.max_requests = 3000:Ukuthintela ukuvuza kwememori, recycle inkqubo rhoqo.

2. Ukunciphisa ixesha lokwenziwa kwemibhalo ye-PHP ukuthintela ukuhlala ixesha elide

request_terminate_timeout = 30s  ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M  ; 限制 PHP 进程最大内存占用

Oku kuthintela izikripthi ezithile ze-PHP ezisebenzisa i-CPU egqithisileyo ekuphazamiseni iseva.

Emva kokugcina, qalisa kwakhona inkqubo ye-PHP:

sudo systemctl restart php8.3-fpm

Lungiselela i-PHP-FPM ngokusekelwe kuqwalaselo lwe-VPS

Umzekelo woqwalaselo lweVPS:

  • Inkcazo: VPS 3 NVMe
  • Indawo yediski: 300 GB
  • Amanqaku eCPU: 8
  • I-RAM: 24 GB

Ngokusekelwe kuqwalaselo lwakho lweVPS ( ii-CPU cores ezisi-8, i-RAM engama-24 GB ), izixhobo zakho zeseva zanele kakhulu. Kwi-PHP-FPM, i-RAM engama-24 GB ikuvumela ukuba ulungiselele inani eliphezulu kakhulu leenkqubo ezisebenza ngaxeshanye.

Kwimeko yemveliso, sihlala sabela imemori eyaneleyo (masithi i-8GB-12GB) kwinkqubo ngokwayo, iidathabheyisi zeApache (ezifana neMySQL /MariaDB), kunye neecache (ezifana neRedis / Memcached ), sishiya imemori eseleyo ye -12GB-16GB ukuba yabelwe ngokupheleleyo kwi-PHP-FPM.

Ngokusekelwe kumlinganiselo wokusetyenziswa kwememori ye- 40MB-60MB ngenkqubo ye-PHP nganye , i-1GB yememori inokuqhuba malunga neenkqubo ezili-16-25.

Oku kulandelayo lulungiselelo lwe-FPM oluhambelana kakhulu nemali eninzi, olusebenza kakuhle kakhulu olulungiselelwe wena , olunokuphucula kakhulu amandla e- WordPress kwaye luthintele ukuba ingawi ngenxa yokunyuka kwezithuthi ngequbuliso:

pm = dynamic

; 允许的最大 PHP 进程数(12GB 内存 / 40MB ≈ 300)
; 8核CPU搭配300个进程,可以轻松应对极高并发,且不至于让内存溢出
pm.max_children = 300

; 启动时创建的初始进程数(CPU核心数 * 4)
pm.start_servers = 32

; 维持的最小空闲进程数(服务器空闲时保留的进程,保证随时响应)
pm.min_spare_servers = 16

; 维持的最大空闲进程数(超过这个数量的空闲进程会被释放)
pm.max_spare_servers = 64

; 每个进程处理1000个请求后自动重启,高配置服务器可适当调大,有效防止WP插件内存泄露
pm.max_requests = 1000

; 单个请求最大执行时间,超时60秒强杀,防止死锁卡死
request_terminate_timeout = 60s

; 慢日志路径及触发阈值(请求超过5秒则记录,用于排查性能瓶颈)
slowlog = /var/log/php8.5-fpm.log.slow
request_slowlog_timeout = 5s

💡 Kutheni le nto icwangcisiwe?

  1. pm.max_children = 300Olu luphuculo oluphambili. Uqwalaselo lwakho lwangaphambili lweenkqubo ezingama-50 belungenalo ugcino olukhulu kwi-24GB yememori. Xa udibana nokunyuka ngequbuliso kwetrafikhi (okanye ii-bots zigcwala imvelaphi), iinkqubo ezingama-50 ziya kuxinana ngoko nangoko, nto leyo ebangela ukuba uqhagamshelo luphelelwe lixesha. Ukuyinyusa ukuya kwi-300 kunokuphucula amandla okucubungula iseva yakho amaxesha amaninzi.
  2. pm.start_servers / `min_spare_serversNgenxa yokuba unee-cores ze-CPU ezisi-8, ekuqaleni ungagcina iinkqubo ezingasebenziyo kwaye zihlala zisebenza, nto leyo ekuvumela ukuba usebenzise ithuba le-multi-core ukuze izicelo ezintsha zivulwe ngoko nangoko ngaphandle kokulinda ukudalwa kwenkqubo.
  3. pm.max_requests = 1000Yanda ukusuka kwi-500 ukuya kwi-1000. Imemori yakho inkulu, kwaye iinkqubo azidingi ukuphinda ziqalwe rhoqo. Ukwandisa ukuya kwi-1000 kunokunciphisa ukusetyenziswa kwe-CPU okubangelwa kukutshatyalaliswa rhoqo kwenkqubo kunye nokudalwa kwayo.

Jonga irekhodi elicothayo:

tail -f /var/log/php8.5-fpm.log.slow
tail -f /var/log/php8.4-fpm.log.slow

Emva kokwenza utshintsho, khumbula ukuqala kwakhona inkonzo ye-PHP-FPM ukuze utshintsho luqale ukusebenza.

systemctl restart php8.5-fpm

Yenza imo esweni ye-PHP-FPM ukugcina umkhondo wenkqubela phambili nangaliphi na ixesha

Ukuvumela ukujonga inkqubo ye-PHP-FPM kukuvumela ukuba ubone inani leenkqubo ezisebenzayo kwaye ucele imeko yokulinda nangaliphi na ixesha , ukuthintela ukugcwala kweseva.

In php-fpm.conf Ifakwe kwi:

pm.status_path = /status

Emva koko, uqwalaselo lweNginx:

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;
}

Ngale ndlela, unako http://yourdomain.com/status Jonga i-PHP-FPM isebenza!

Lungiselela iilog ze-PHP-FPM ukulungisa iingxaki ngokukhawuleza

In php-fpm.conf Faka kwi:

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 的脚本记录到日志

Ngale ndlela, nanini na impazamo ye-500 isenzeka, unokujonga ngqo ilog:

tail -f /var/log/php-fpm/error.log

Jonga ukuba PHP ingxelo impazamo, ezifana out of memory,script execution timeout Yima.

Qala kwakhona i-PHP-FPM rhoqo ukukhusela ukuvuza kwememori

ndiyakwazi ukudlula cron Qala kwakhona i-PHP-FPM rhoqo ukukhusela iinkqubo ezithatha ixesha elide ekubangeleniUkuvuza kweenkumbulo,

crontab -e

Yongeza lo msebenzi ulandelayo ucwangcisiweyo ukuze uqalise ngokuzenzekelayo i-PHP-FPM ngo-3 am yonke imihla:

0 3 * * * /usr/sbin/service php8.5-fpm restart

Kuthekani ukuba le ngxaki iyaqhubeka? Ukwandisa ngakumbi!

Ukuba ngamanye amaxesha ufumana impazamo ye-500 emva kokulandela olu lungiso lungasentla , ungaqhubeka nolungiso olulandelayo:

1. Yenza i-OPcache iphucule ukusebenza kakuhle kwe-PHP

Ukuba i-OPcache ayikasetyenziswa, ungayifaka ngolu hlobo (usebenzisa Ubuntu njengomzekelo):

sudo apt install php8.5-opcache -y

Emva koko uhlele php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0
  • i-opcache.validate_timestamps=0
  • Khubaza ukufunyanwa kwexesha langempelaNciphisa i-I/O yenkqubo yefayile kwaye uphucule ukusebenza.
  • Nangona kunjalo, oku kuthetha ukuba kufuneka ucime i-cache ngesandla (uqalise kwakhona inkonzo ye-PHP) emva kokutshintsha iifayile ze-PHP.

Emva kokutshintsha uqwalaselo, kufuneka uqalise kwakhona inkonzo ye-PHP ukuze utshintsho luqale ukusebenza.

sudo systemctl restart php<版本>-fpm

Isiphumo? Isantya sokwenziwa kwephepha le-PHP siphuculwe kakhulu!

2. Ukulungiswa koqwalaselo lweNginx

Qinisekisa ukuba iiparamitha ezinxulumene neNginx zifanelekile, njenge fastcgi_read_timeout Yihlengahlengise ngokufanelekileyo ukunqanda ukuba izikripthi ze-PHP zipheliswe yi-Nginx ngenxa yexesha elide lokuphumeza:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Isishwankathelo: Lungiselela i-PHP-FPM kwaye iwebhusayithi ayisayi kuphinda iqhubeleke!

Luluphi uhlengahlengiso esilwenzileyo emva kolu lungiselelo?

✅ Ukuphucula inkqubo ye-PHP-FPM,usebenzisa ondemandKwaye wandise pm.max_children ipharamitha;
Ukunciphisa ixesha lokwenziwa kwemibhalo ye-PHP, ukuthintela umsebenzi weCPU wexesha elide;
Yenza uqwalaselo lwe-PHP-FPM lusebenze, jonga inkqubo yokulayisha ngexesha lokwenyani;
Ukuphucula iilog ze-PHP-FPM, ngokukhawuleza ukulungisa iimpazamo ezingama-500;
Qala kwakhona i-PHP-FPM rhoqo, ukuthintela ukuvuza kwememori;
Vula i-OPcache, ukuphucula ukusebenza kakuhle kwe-PHP;
Ukuphucula ubumbeko lweNginx, ukunqanda imiba yexesha.

Emva kolu lungiselelo, umthwalo we-PHP-FPM uya kuncitshiswa kakhulu kwaye ukusebenza kwewebhusayithi kuya kuzinza ngakumbi! 🔥

Hamba uyizame ngoku! 💪🚀

Ukuba usenomdla wokufunda okungakumbi malunga nokwenza ngokwezifiso iitemplate ze-PHP-FPM ngeHestiaCP, eli nqaku liza kukunika ukuqonda okunzulu:

👉 Itemplate yeHestiaCP ye-PHP-FPM eyenziwe ngokwezifiso: Iimfihlo zoLungiso lweNtsebenzo ze-PHP 8.5 ▼

Kule mxholo, uza kubona:

  • Iindlela zokwenza ngcono imali ehambelanayo: Indlela yokuphucula isantya sempendulo ngokuseta inkqubo efanelekileyo.
  • Isisombululo sokwahlukanisa ukhuseleko: Ziphephe iingozi zokufikelela kwiindawo ezahlukeneyo kwaye uqinisekise uzinzo lweakhawunti.
  • Iirekhodi kunye nokubeka esweni: Sebenzisa iirekhodi ezicothayo ukuze ufumane imiqobo kwaye uqhubeke nokuphucula ukusebenza kwewebhusayithi.

Shiya uluvo

您的邮箱地址不会被公开。必填项已用*标注

Skrolela phezulu