HestiaCP PHP-FPM ili ndi katundu wolemetsa? Cholakwika champhamvu patsamba 500? Kukhathamiritsa uku kudzagwira ntchito nthawi yomweyo!

Kodi munakumanapo ndi vutoli?Kufikira pawebusayiti kudachepa mwadzidzidzi, kapena kudapangitsa kuti pakhale cholakwika cha 500 Pambuyo poyambitsanso PHP-FPM, idabwerera mwakale., koma vuto limabweranso pakapita nthawi? Izi ndi zokhumudwitsa kwambiri!

Chifukwa chiyani izi zikuchitika?Ndipotu, izi zimakhala chonchoPhukusi la ndondomeko ya PHP-FPM silinakonzedwe bwino, kapena zothandizira za seva ndizosakwanira.chifukwa. Lero, tidzakonza bwino HestiaCP PHP-FPM pansi pa hood imapangitsa tsamba lawebusayiti kukhala lokhazikika ngati mwala!

Chifukwa chachikulu chomwe PHP-FPM yadzaza

PHP-FPM ndiProcess Manager, yomwe ili ndi udindo wosamalira zopempha zamphamvu. Ngati kasinthidwe sikuli koyenera, kungayambitse:

  • Zida za seva zatha, kuchititsa PHP-FPM kulephera kuyankha zopempha zatsopano panthawi yake;
  • Njira zochepa kwambiri, pamene magalimoto akuwonjezeka mwadzidzidzi, sangathe kukonzedwa panthawi yake;
  • Kugwiritsa ntchito ndikokwera kwambiri, kupangitsa kuchuluka kwa CPU kuphulika.

HestiaCP PHP-FPM ili ndi katundu wolemetsa? Cholakwika champhamvu patsamba 500? Kukhathamiritsa uku kudzagwira ntchito nthawi yomweyo!

Kodi mungadziwe bwanji ngati PHP-FPM yadzaza?

akhoza kugwiritsa ntchito top Kapena htop Lamulo kuti muwone CPU ndi kugwiritsa ntchito kukumbukira:

top -c

Mukawona ndondomeko yofanana ndi yotsatirayi, zikutanthauza kuti PHP-FPM ikugwira ntchito kwambiri:

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

Mukuwona momwe izi zikutenga 70% ya CPU? Izi zikachitika nthawi zambiri, PHP-FPM yanu Payenera kukhala vuto!

Ndiye, tingakonzekere bwanji kasinthidwe ka PHP-FPM kuti seva isadzalemedwenso?

Kukhathamiritsa kwa dziwe la PHP-FPM (kusintha kwapakati)

Choyamba, tsegulani php-fpm Mafayilo Osintha:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Sinthani ku mtundu wanu wa PHP, monga PHP8.5, ndikusintha kukhala izi:/etc/php/8.3/fpm/pool.d/www.conf

Funsani mtundu wa PHP wokhazikitsidwa ndi HestiaCP

v-list-web-domain user domain.com

E.g:

v-list-web-domain abc chenweiliang.com

Muzotulutsa, muwona chinthu chonga:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.5 

Izi zikutanthauza kuti tsambalo limagwiritsa ntchito PHP 8.5.

Tiyeni tiwone masinthidwe anu a 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

Mutha kuwona kuti pm Zomwe zimagwiritsidwa ntchito ndi ondemand,Ngakhale zitha kuchepetsa kugwiritsidwa ntchito kwazinthu panthawi yopanda ntchito, magalimoto akamawonjezeka mwadzidzidzi, njirayi singathe kuyankha munthawi yake., kupangitsa kuti 500 zolakwika.

www.conf: "Gulu lazinthu zonse" lomwe lamangidwa mkati mwa dongosololi

Mukakhazikitsa PHP-FPM, dongosololi lidzakupatsani zokha ... www.conf chikalata.
它的KuyikaNdi zophweka kwambiri—ndi njira yokhazikika yomwe imagwira ntchito kuchokera mu bokosi, nthawi zambiri yolumikizidwa ku... www-data Koperani kwa ogwiritsa ntchito.

Mtundu uwu wa dziwe ndi woyenera kwambiri pa malo omwe ali pamalo amodzi: kasinthidwe kake ndi kopepuka, ndipo magawo onse ndi ma tempuleti wamba, monga:

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

Ngati muli ndi tsamba limodzi lokha, mutha kuligwiritsa ntchito mwachindunji komanso modalirika popanda vuto lina lililonse.

etufo.org.conf: Dziwe lopangidwira

Mukayamba kugwiritsa ntchito mawebusayiti angapo, simungathe kusunga aliyense wodzaza m'madzi amodzi.
Pakadali pano, HestiaCP ipanga yokha dziwe losiyana la tsamba lililonse, mwachitsanzo... etufo.org.confZapadera pa mayina a domain etufo.org 服务。

Njira yodziwika bwino yosewera ndi iyi:

  • Sinthani ogwiritsa ntchito ndi magulu:user = etufo,group = etufo
  • Kuwunika kodziyimira pawokha:listen = /run/php/etufo.sock
  • Kusintha chiwerengero cha njira kumatsimikizira kukhazikika kwa thanthwe ngakhale pakakhala ndalama zambiri.
  • Mafayilo osiyana a log amapangitsa kuti mavuto azitha kuthetsedwa mosavuta.

Ubwino wake ndi woonekeratu:Kudzipatula kotetezekaNgakhale tsamba limodzi litasokonekera, masamba enawo sadzakhudzidwa.

dummy.conf: fayilo yachiphamaso

dummy.conf Izi nthawi zambiri zimakhala zitsanzo kapena ma template omwe amaperekedwa ndi dongosolo.
Sizigwira ntchito pokhapokha mutasintha ndi kuyiyambitsa pamanja.
Kufunika kwake kuli ngati "buku lothandizira," lomwe limakuuzani momwe mungalembere kasinthidwe katsopano ka dziwe.

N’chifukwa chiyani dziwe losambiramo limagawidwa?

  • 安全 性Gwiritsani ntchito ogwiritsa ntchito osiyanasiyana pamasamba osiyanasiyana kuti mupewe zilolezo zotsutsana.
  • 性能优化Chiwerengero cha njira chingasinthidwe payekhapayekha pa dziwe lililonse, zomwe zimalola kusintha kosinthika kutengera kuchuluka kwa magalimoto omwe akuyenda.
  • KudzipatulaZolemba, zolakwika, ndi maadiresi omvera zonse zimalekanitsidwa, zomwe zimapangitsa kuti kuthetsa mavuto kukhale kosavuta.

Mwachitsanzo: ngakhale www.conf Inagwa.etufo.org.conf Idzagwirabe ntchito bwino ndipo sidzagwetsa seva yonse.

实际场景

  • Seva ya tsamba limodzi: www.conf ndi yokwanira.
  • Seva ya malo ambiriTsamba lililonse lili ndi fayilo yakeyake ya .conf, monga etufo.org.conf.
  • dummy.confKwa zongoganizira zokha, sizikulimbikitsidwa.

Kuyerekeza kwa Kapangidwe

www.conf (dziwe lokhazikika)

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

etufo.org.conf (Dziko Lopangidwira)

[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

Kusiyana kwakukulu ndi:Chidziwitso cha wogwiritsa ntchito, adilesi yomvera, kuchuluka kwa njira zomwe zagwiritsidwa ntchito.

1. Sinthani magawo a pool a PHP-FPM

Ngati configuration ikugwiritsa ntchito dynamicIyi ndi njira yoyambira njira zina zogwirira ntchito ndikuzisintha mwamphamvu molingana ndi voliyumu yopempha, yomwe imatha kuyankha mwachangu pomwe voliyumu yopempha ikuwonjezeka mwadzidzidzi.

Kwa mawebusayiti omwe ali ndi kuchuluka kwa magalimoto, tikulimbikitsidwa kugwiritsa ntchito pm = dynamicChifukwa imatha kusunga njira zina zopanda pake ndikupewa zolakwika za 500 panthawi yolumikizana kwambiri.

Ndikofunikira kuti mugwiritse ntchito pokhapokha ngati voliyumu yofikira ili yotsika kwambiri ndipo zokumbukira zili zolimba. pm = ondemand Kusunga zothandizira.

Analimbikitsa dynamic, ndi kukhathamiritsa pm.max_children Ndi magawo ena:

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

Chifukwa chiyani mukufuna kusintha chonchi?

  • pm = dynamic: Perekani njira momasuka kuti mupewe kudikirira komwe kungabwere chifukwa chofuna;
  • pm.max_children = 16: Pewani zolakwika za 500 chifukwa cha njira zochepa;
  • pm.start_servers = 5: Pewani pang'onopang'ono ndondomeko poyambira;
  • pm.max_requests = 3000:Kuteteza kukumbukira kutayikira, konzanso ndondomekoyi nthawi zonse.

2. Chepetsani nthawi yoperekera zolemba za PHP kuti mupewe kukhalapo kwanthawi yayitali

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

Izi zingalepheretse enaZolemba za PHP zomwe zimagwiritsa ntchito CPU zambiri zimatha kutsitsa seva yanu.

Mukasunga, yambitsaninso njira ya PHP:

sudo systemctl restart php8.3-fpm

Konzani PHP-FPM kutengera kasinthidwe ka VPS

Chitsanzo cha kasinthidwe ka VPS:

  • Kufotokozera: VPS 3 NVMe
  • Malo a Disk: 300 GB
  • Ma CPU: 8
  • RAM: 24 GB

Kutengera ndi kasinthidwe ka VPS yanu (CPU ya 8-core, 24 GB RAMZida za seva yanu ndizokwanira. Pa PHP-FPM, 24 GB ya memory imakulolani kukonza kuchuluka kwakukulu kwa njira zomwe zimachitika nthawi imodzi.

Mu malo opangira zinthu, nthawi zambiri timapereka dongosolo lokha, database ya Apache (monga...) MySQL/MariaDB) ndi cache (monga Redis/KukumbutsidwaSiyani zokumbukira zokwanira (tiyerekeze 8GB-12GB), zina zonse... RAM ya 12GB-16GBIkhoza kuperekedwa kwathunthu ku PHP-FPM.

Kutengera kuchuluka kwa ntchito pa njira iliyonse ya PHP 40MB – 60MB Ponena za kugwiritsa ntchito kukumbukira, 1GB ya kukumbukira imatha kugwira ntchito pafupifupi 16-25.

Zotsatirazi zapangidwira inu.Kusintha kwa FPM kogwirizana kwambiri, kogwira ntchito kwambiriZingasinthe kwambiri WordPress Ili ndi mphamvu yosamalira magalimoto ambiri ndipo imatha kuletsa kuchuluka kwa magalimoto mwadzidzidzi kuti asawononge makina.

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

💡 Chifukwa chiyani izi zachitika?

  1. pm.max_children = 300Uku ndi kukonza kwakukulu. Kapangidwe kanu kakale ka njira 50 kanali kosakwanira kukumbukira 24GB. Mukakumana ndi kuchuluka kwa magalimoto mwadzidzidzi (kapena ma bots akusefukira kumbuyo), njira 50 zikanatha nthawi yomweyo, zomwe zimapangitsa kuti kulumikizana kuchedwe. Kuonjezera mpaka 300 kungathandize kuti seva yanu igwire ntchito moyenera kangapo.
  2. pm.start_servers / `min_spare_serversPopeza muli ndi ma CPU cores 8, poyamba komanso nthawi zambiri mutha kusunga njira zambiri zosagwira ntchito, zomwe zimakupatsani mwayi wogwiritsa ntchito mwayi wa multi-core kuti zopempha zatsopano zitsegulidwe nthawi yomweyo popanda kudikira kuti njira ipangidwe.
  3. pm.max_requests = 1000Onjezani kuchokera pa 500 kufika pa 1000. Memory yanu ndi yayikulu, ndipo ma process safunika kuyambiranso pafupipafupi. Kuwonjezeka kufika pa 1000 kungachepetse kugwiritsa ntchito CPU komwe kumachitika chifukwa cha kuwonongeka kwa ma process komanso kupanga pafupipafupi.

Mukasintha, kumbukirani kuyambitsanso ntchito ya PHP-FPM kuti zosinthazo ziyambe kugwira ntchito.

systemctl restart php8.5-fpm

Yambitsani kuwunika kwa mawonekedwe a PHP-FPM kuti muzitha kuyang'anira momwe zikuyendera nthawi iliyonse

Yambitsani kuyang'anira ndondomeko ya PHP-FPM ndikuyiwona nthawi iliyonseNambala yaposachedwa ya njira zomwe zikugwira ntchito ndikufunsa momwe mukudikirira, kupewa kuchuluka kwa seva.

Mwa php-fpm.conf Zowonjezedwa mu:

pm.status_path = /status

Kenako, kasinthidwe ka 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;
}

Mwa njira iyi, mukhoza http://yourdomain.com/status Onani PHP-FPM ikugwira ntchito!

Konzani zipika za PHP-FPM kuti muthetse mavuto mwachangu

Mwa php-fpm.conf Onjezani ku:

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

Mwanjira iyi, nthawi iliyonse cholakwika cha 500 chikachitika, mutha kuwona chipikacho:

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

Onani ngati PHP ikunena zolakwika, monga out of memory,script execution timeout Yembekezani.

Yambitsaninso PHP-FPM pafupipafupi kuti mupewe kutayikira kwa kukumbukira

wokhoza kudutsa cron Yambitsaninso PHP-FPM pafupipafupi kuti mupewe kuchititsa kwanthawi yayitaliMemory Leaks.

crontab -e

Onjezani ntchito yotsatirayi kuti muyambitsenso PHP-FPM nthawi ya 3 am tsiku lililonse:

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

Nanga bwanji ngati vutolo likupitirirabe? Kukhathamiritsa kwina!

Ngati mutsatirabe kukhathamiritsa pamwambaNthawi zina zolakwika 500 zimachitika, mutha kupitiriza ndi kukhathamiritsa zotsatirazi:

1. Yambitsani OPcache kuwongolera magwiridwe antchito a PHP

Ngati OPcache sinayatsidwebe, mutha kuyiyika motere (pogwiritsa ntchito Ubuntu monga chitsanzo):

sudo apt install php8.5-opcache -y

Kenako sinthani php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0
  • opcache.validate_timestamps=0
  • Letsani kuzindikira nthawi yeniyeniChepetsani I/O ya dongosolo la mafayilo ndikuwongolera magwiridwe antchito.
  • Komabe, izi zikutanthauza kuti muyenera kuchotsa cache pamanja (kuyambitsanso ntchito ya PHP) mukasintha mafayilo a PHP.

Mukasintha kasinthidwe, muyenera kuyambitsanso ntchito ya PHP kuti zosinthazo ziyambe kugwira ntchito.

sudo systemctl restart php<版本>-fpm

Zotsatira zake? Kuthamanga kwa tsamba la PHP kwasinthidwa kwambiri!

2. Kusintha kwa Nginx kasinthidwe

Onetsetsani kuti magawo okhudzana ndi Nginx ndi omveka, monga fastcgi_read_timeout Sinthani moyenera kuti mupewe zolemba za PHP kuthetsedwa ndi Nginx chifukwa cha nthawi yayitali yopha:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Mwachidule: Konzani PHP-FPM ndipo tsambalo silidzawonongekanso!

Kodi tapanga zosintha zotani pambuyo pa kukhathamiritsa kumeneku?

✅ Kukonza dziwe la PHP-FPM, gwiritsani ondemandNdipo konzekerani pm.max_children chizindikiro;
Kuchepetsa nthawi yoperekera zolemba za PHP, kuteteza CPU ntchito yaitali;
Yambitsani kuwunika kwa PHP-FPM, onani ndondomeko katundu mu nthawi yeniyeni;
Konzani zipika za PHP-FPM, sinthani mwachangu zolakwika 500;
Yambitsaninso PHP-FPM pafupipafupi, kuteteza kukumbukira kutayikira;
Yambitsani OPcache, kukonza magwiridwe antchito a PHP;
Kukhathamiritsa kwa Nginx Configuration, kupeŵa mavuto otha.

Pambuyo pa kukhathamiritsa uku, katundu wa PHP-FPM adzachepetsedwa kwambiri ndipo ntchito ya webusaitiyi idzakhala yokhazikika! 🔥

Pitani mukayese tsopano! 💪🚀

Ngati mukufunabe kudziwa zambiri zokhudza kusintha ma tempuleti a PHP-FPM ndi HestiaCP, ndiye kuti nkhaniyi ikupatsani kumvetsetsa kwakuya:

👉 HestiaCP Custom PHP-FPM Template: Zinsinsi Zowongolera Magwiridwe Antchito a PHP 8.5 ▼

Mu izi, muwona:

  • Njira zowongolera ndalama zambiri: Momwe mungakulitsire liwiro la mayankho kudzera mu kasinthidwe koyenera ka njira.
  • Njira yothetsera chitetezo: Pewani zoopsa zolowera pa intaneti ndipo onetsetsani kuti akaunti yanu ndi yokhazikika.
  • Zolemba ndi kuwunika: Gwiritsani ntchito zolemba pang'onopang'ono kuti mupeze zopinga ndikuwongolera magwiridwe antchito a tsamba lawebusayiti nthawi zonse.

发表 评论

Imelo yanu sisindikizidwa. Minda yofunikira imagwiritsidwa ntchito * Chizindikiro

Pitani pamwamba