HestiaCP PHP-FPM di bin barê giran de ye? Çewtiya rûpela malpera dînamîk 500? Ev optimîzasyon dê tavilê bikeve meriyetê!

Gelo tu qet rastî vê rewşê hatî? Malpera te ji nişkê ve hêdî dibe, an jî xeletiyek 500 derdixe. Ji nû ve destpêkirina PHP-FPM wê vedigerîne rewşa normal , lê pirsgirêk piştî demekê dîsa derdikeve holê? Ev pir acizker e!

Çima ev diqewime? Bi rastî, ev bi gelemperî ji ber mîhengkirina hewza pêvajoya PHP-FPM-ê ya nerast an jî çavkaniyên serverê yên ne bes çêdibe . Îro, em ê PHP-FPM-ê di bin HestiaCP-ê de bi tevahî çêtir bikin da ku aramiya malpera we ya zexm misoger bikin!

Sedema bingehîn çima PHP-FPM zêde ye

PHP-FPM rêveberê pêvajoyê yê PHP-ê ye , berpirsiyarê birêvebirina daxwazên dînamîk e. Mîhengkirina ne guncaw dikare bibe sedema:

  • Çavkaniyên serverê qediyane, dibe sedem ku PHP-FPM nikaribe di wextê xwe de bersivê bide daxwazên nû;
  • Pêvajoyên pir kêm, gava ku seyrûsefer ji nişka ve zêde dibe, ew di wextê de nayê pêvajo kirin;
  • Bikaranîna pêvajoyê pir zêde ye, dibe sedem ku barkirina CPU biteqe.

HestiaCP PHP-FPM di bin barê giran de ye? Çewtiya rûpela malpera dînamîk 500? Ev optimîzasyon dê tavilê bikeve meriyetê!

Meriv çawa bibêje ka PHP-FPM zêde barkirî ye?

dikarin bikar bînin tophtop Fermana dîtina karanîna CPU û bîranînê:

top -c

Ger hûn agahdariya pêvajoyê mîna ya jêrîn dibînin, ev tê vê wateyê ku PHP-FPM di bin barek zêde de dimeşe:

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

Ma hûn dibînin ku ev pêvajo ji %70 zêdetir CPU-yê bikar tînin? Ger ev yek pir caran biqewime, wê hingê bê guman tiştek xelet bi PHP-FPM-ya we re heye!

Ji ber vê yekê, em çawa dikarin veavakirina PHP-FPM xweş bikin da ku server êdî zêde neyê barkirin?

Optimîzasyona hewzê ya pêvajoya PHP-FPM (verastkirina parametreya bingehîn)

Pêşîn, vekin php-fpm Pelên Veavakirinê:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Guhertoya PHP-ya xwe biguherîne, wek PHP8.5, û wê biguherîne vê:/etc/php/8.3/fpm/pool.d/www.conf

Guhertoya PHP-ê ya ku ji hêla HestiaCP ve hatî danîn lê bipirse

v-list-web-domain user domain.com

Mînak:

v-list-web-domain abc chenweiliang.com

Di encam de, hûn ê tiştek wekî bibînin:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.5 

Ev nîşan dide ku malper PHP 8.5 bi kar tîne.

Ka em li mîhengê PHP-FPM-ya we binêrin:

[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

Hûn dikarin bibînin ku hûn pm Ya ku tê bikar anîn ev e ondemand,Her çend ew dikare di dema betaliyê de karanîna çavkaniyê kêm bike, dema ku seyrûsefer ji nişka ve zêde dibe, dibe ku pêvajo di wextê de nikaribe bersivê bide., di encama 500 error.

www.conf: "Hewza çavkaniyên gerdûnî" ya çêkirî ya sîstemê

Piştî sazkirina PHP-FPM, pergal dê bixweber ji we re peyda bike... www.conf belge.
EwPositioningEw pir hêsan e - ew tenê hewzek pêvajoyek xwerû ye ku ji qutiyê ve dixebite, bi gelemperî bi ... ve girêdayî ye. www-data Daxistina bikarhêner.

Ev cureyê hewzê bi taybetî ji bo jîngehên yek-malperî guncaw e: mîheng sivik e, û parametre hemî şablonên gelemperî ne, wek:

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

Heke hûn tenê yek malperek mêvandar bikin, hûn dikarin wê rasterast û pêbawer bêyî ti tengasiyek zêde bikar bînin.

etUFO.org.conf: Hewza xwerû

Dema ku hûn gelek malperan dimeşînin, hûn nekarin hemûyan di heman hewzê de kom bikin.
Di vê gavê de, HestiaCP dê ji bo her malperê bixweber hewzek cuda çêbike, mînakî... etUFO.org.confTaybet ji bo navên domainê etufo.org

Rêbaza hevpar a lîstinê ev e:

  • Bikarhêner û koman biguherînin:user = etufo,group = etufo
  • Çavdêriya Serbixwe:listen = /run/php/etufo.sock
  • Rêzkirina hejmara pêvajoyan, tewra di bin hevdemiya bilind de jî, îstîqrareke pir xurt misoger dike.
  • Pelên têketinê yên cuda çareserkirina pirsgirêkan zelaltir dikin.

Feydeyên wê eşkere ne: tecrîda ewle . Heta ku malperek têk biçe jî, yên din bêbandor dimînin.

dummy.conf: pelê sexte

mantel.conf Ev bi gelemperî mînak an şablonên ku ji hêla pergalê ve têne peyda kirin in.
Ew ê bi rastî nexebite heya ku hûn bi destan neguherînin û çalak nekin.
Girîngiya wê bêtir dişibihe "rêbernameya xebitandinê", ku ji we re vedibêje ka meriv çawa mîhengê hewzê yê nû dinivîse.

Çima hewzê parçe bikin?

  • 安全 性Ji bo dûrketina ji destûrên nakok, ji bo malperên cuda bikarhênerên cuda bikar bînin.
  • 性能优化Hejmara pêvajoyan dikare ji bo her hewzê bi awayekî ferdî were sererast kirin, ku rê dide sererastkirinên nerm li gorî daxwaza trafîkê.
  • CudakirinTêketin, çewtî, û navnîşanên guhdarîkirinê hemî ji hev cuda ne, ku çareserkirina pirsgirêkan hêsantir dike.

Bo nimûne, heta eger www.conf têk biçe jî, etufo.org.conf dê dîsa jî bi awayekî normal bixebite û tevahiya serverê nexebitîne.

实际场景

  • Servera yek-malperî: www.conf bes e.
  • Servera pirmalperîHer malper pelê xwe yê .conf yê serbixwe heye, wek etufo.org.conf.
  • mantel.confTenê ji bo referansê, nayê pêşniyar kirin.

Berawirdkirina Mîhengan

www.conf (hewza xwerû)

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

etufo.org.conf (Hozana Taybetî)

[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

Cûdahiyên sereke ev in: nasnameya bikarhêner, navnîşana guhdarîkirinê, û hejmara pêvajoyan.

1. Parametreyên hewza pêvajoya PHP-FPM eyar bikin

Ger veavakirinê bikar tîne dynamicEv rêbazek e ji bo pêş-destpêkirina hin pêvajoyên xebatê û bi dînamîkî verastkirina wan li gorî qebareya daxwazê, ku dema ku qebareya daxwazê ​​ji nişkê ve zêde dibe, dikare zûtir bersiv bide.

Ji bo malperên ku xwedî hejmareke diyarkirî ya trafîkê ne, tê pêşniyar kirin ku bikar bînin pm = dynamicJi ber ku ew dikare hejmareke diyarkirî ya pêvajoyên bêkar biparêze û di dema hevdemiya bilind de ji 500 xeletiyan dûr bisekine.

Pêşniyar tê kirin ku tenê dema ku qebareya gihîştinê pir kêm be û çavkaniyên bîrê teng bin, were bikar anîn. pm = ondemand Ji bo rizgarkirina çavkaniyan.

Ji bo guhertinê tê pêşniyar kirin dynamic, û xweşbîn bikin pm.max_children Û parametreyên din:

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

Çima hûn dixwazin bi vî rengî biguherînin?

  • pm = dynamic: Pêvajoyan bi nermî veqetînin da ku ji bendewariya daxwazê ​​ya ku dibe ku ji hêla daxwazê ​​ve dibe sedema dûr bixin;
  • pm.max_children = 16: Pêşîlêgirtina 500 xeletiyên ku ji hêla pir kêm pêvajoyê ve têne çêkirin;
  • pm.start_servers = 5: Dûr destpêkirina pêvajoya hêdî;
  • pm.max_requests = 3000:Pêşîlêgirtina leaksên bîranînê, pêvajoyê bi rêkûpêk vezîvirînin.

2. Ji bo pêşîgirtina li dagirkirina demdirêj dema pêkanîna nivîsên PHP-ê bisînor bikin

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

Ev yek rê li ber hin skrîptên PHP-ê digire ku CPU-ya zêde dixwin ku serverê têk bibin.

Piştî tomarkirinê, pêvajoya PHP-ê ji nû ve bidin destpêkirin:

sudo systemctl restart php8.3-fpm

PHP-FPM li gorî mîhengkirina VPS-ê çêtir bikin

Nimûneya mîhengkirina VPS:

  • Terîf: VPS 3 NVMe
  • Qada Diskê: 300 GB
  • Corên CPU: 8
  • RAM: 24 GB

Li gorî mîhengkirina VPS-ya we ( 8 coreyên CPU, 24 GB RAM ), çavkaniyên servera we ji têrê zêdetir in. Ji bo PHP-FPM, 24 GB RAM dihêle hûn hejmareke pir zêde ji pêvajoyên hevdem mîheng bikin.

Di hawîrdoreke hilberînê de, em bi gelemperî ji bo pergalê bi xwe, databasên Apache (wek MySQL /MariaDB), û keşfên (wek Redis / Memcached ) bîra têra xwe (wek mînak 8GB-12GB) vediqetînin, û bîra mayî ya 12GB-16GB bi tevahî ji PHP-FPM re dihêlin.

Li gorî karanîna navînî ya bîranînê ya 40MB-60MB ji bo her pêvajoyek PHP , 1GB bîranîn dikare bi qasî 16-25 pêvajoyan bimeşîne.

Ev mîhengkirineke FPM ya bi performansa bilind û hevdemî ye ku ji bo we hatiye çêkirin , ku dikare kapasîteya WordPress -ê pir baştir bike û rê li ber têkçûna wê ji ber zêdebûna trafîkê ya ji nişka ve bigire:

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

💡 Çima ev konfigurasyon?

  1. pm.max_children = 300Ev çêtirkirineke bingehîn e. Mîhenga we ya berê ya 50 pêvajoyan ji bo 24GB bîra pir parastî bû. Dema ku hûn rastî zêdebûna ji nişka ve ya trafîkê werin (an jî botên ku paşxaneyê tijî dikin), 50 pêvajo dê tavilê werin barkirin, û ev yek dê bibe sedema qutbûna demê ya girêdanê. Zêdekirina wê bo 300 dikare kapasîteya pêvajoya hevdemî ya servera we çend caran baştir bike.
  2. pm.start_servers / `min_spare_serversJi ber ku we 8 coreyên CPU hene, hûn dikarin di destpêkê de û bi gelemperî bêtir pêvajoyên bêkar bihêlin, ku dihêle hûn ji avantaja pir-core sûd werbigirin da ku daxwazên nû bêyî ku li benda afirandina pêvajoyê bimînin tavilê werin vekirin.
  3. pm.max_requests = 1000Ji 500 zêde bike bo 1000. Hafizeya te mezin e, û pêdivî bi destpêkirina pir caran a pêvajoyan nîne. Zêdekirina bo 1000 dikare xerckirina CPU-yê ya ji ber hilweşandin û afirandina pir caran a pêvajoyan kêm bike.

Têketina hêdî bibînin:

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

Piştî çêkirina guhertinan, ji bîr mekin ku karûbarê PHP-FPM-ê ji nû ve bidin destpêkirin da ku guhertin bandor bibin.

systemctl restart php8.5-fpm

Çavdêriya statûya PHP-FPM çalak bike da ku di her kêliyê de pêşveçûnê bişopîne

Çalakkirina çavdêriya pêvajoya PHP-FPM dihêle hûn di her kêliyê de hejmara pêvajoyên çalak bibînin û rewşa benda daxwazê ​​​​bikin , û pêşî li zêdebariya serverê bigirin.

php-fpm.conf Zêdekirin li:

pm.status_path = /status

Dûv re, veavakirina 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;
}

Bi vî awayî, hûn dikarin http://yourdomain.com/status Di çalakiyê de PHP-FPM binihêrin!

Têketinên PHP-FPM xweşbîn bikin da ku zû pirsgirêkan çareser bikin

php-fpm.conf Zêde bike bo:

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

Bi vî rengî, gava ku xeletiyek 500 çêbibe, hûn dikarin rasterast têketinê bibînin:

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

Binêrin ka PHP xeletiyek rapor dike, wek mînak out of memory,script execution timeout

PHP-FPM-ê bi rêkûpêk ji nû ve bidin destpêkirin da ku pêşî li derketina bîranînê bigirin

bikaribe derbas bibe cron PHP-FPM-ê bi rêkûpêk ji nû ve bidin destpêkirin da ku pêşî li pêvajoyên dirêj-dirêj bigirinMemory Leaks.

crontab -e

Karê plansazkirî yê jêrîn zêde bikin da ku PHP-FPM bixweber di 3ê sibehê de her roj ji nû ve dest pê bike:

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

Heke pirsgirêk berdewam bike? Optimîzasyona bêtir!

Heke hûn piştî şopandina çêtirkirinên jorîn carinan rastî xeletiyek 500 werin , hûn dikarin bi çêtirkirinên jêrîn berdewam bikin:

1. OPcache çalak bike ku karbidestiya darvekirina PHP-ê baştir bike

Ger OPcache hîn neçalak be, hûn dikarin wê bi vî rengî saz bikin (Ubuntu wekî mînak bikar bînin):

sudo apt install php8.5-opcache -y

Piştre biguherînin php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0
  • opcache.validate_timestamps=0
  • Tesbîtkirina demrast neçalak bikeI/O ya pergala pelan kêm bike û performansê baştir bike.
  • Lêbelê, ev tê vê wateyê ku divê hûn piştî guherandina pelên PHP-ê bi destan keşê paqij bikin (xizmeta PHP-ê ji nû ve bidin destpêkirin).

Piştî guhertina mîhengê, divê hûn karûbarê PHP-ê ji nû ve bidin destpêkirin da ku guhertin bandor bibin.

sudo systemctl restart php<版本>-fpm

Tesîr? Leza pêkanîna rûpela PHP-ê pir çêtir bûye!

2. Optimîzasyona veavakirina Nginx

Bawer bikin ku parametreyên têkildarî Nginx maqûl in, wek mînak fastcgi_read_timeout Wê bi guncaw eyar bikin da ku ji ber dema darvekirina dirêj, nivîsarên PHP-ê ji hêla Nginx ve neyên qedandin:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Kurte: PHP-FPM-ê xweşbîn bikin û malper êdî têk diçe!

Me piştî vê xweşbîniyê çi sererastkirin çêkir?

✅ Optimîzekirina hewza pêvajoya PHP-FPM,bikaranîn ondemandÛ optimîze bike pm.max_children parametre;
Sînorkirina dema darvekirinê ya nivîsarên PHP-ê, ji bo pêşîlêgirtina dagirkirina CPU ya demdirêj;
Çavdêriya PHP-FPM çalak bike, barkirina pêvajoyê di wextê rast de bibînin;
Optimîzekirina têketinên PHP-FPM, bi lez 500 xeletiyan çareser bikin;
PHP-FPM bi rêkûpêk ji nû ve bidin destpêkirin, pêşîlêgirtina leaksên bîranînê;
OPcache çalak bike, karbidestiya darvekirina PHP çêtir bikin;
Optimîzekirina Veavakirina Nginx, ji bo ku pirsgirêkên wextê dûr bikin.

Piştî vê xweşbîniyê, barkirina PHP-FPM dê pir kêm bibe û xebata malperê dê aramtir be! 🔥

Here wê biceribîne! 💪🚀

Eger hûn hîn jî dixwazin di derbarê xwerûkirina şablonên PHP-FPM bi HestiaCP re bêtir fêr bibin, wê hingê ev gotar dê têgihîştinek kûrtir bide we:

👉 Şablona PHP-FPM ya Xweser a HestiaCP: Nehêniyên Optimîzasyona Performansê ya PHP 8.5 ▼

Di vê naverokê de, hûn ê bibînin:

  • Teknîkên optîmîzasyona hevdemiya bilind: Meriv çawa bi rêya vesazkirina pêvajoyê ya maqûl leza bersivê baştir dike.
  • Çareseriya îzolasyona ewlehiyê: Ji rîskên gihîştina nav-malperê dûr bisekinin û aramiya hesabê misoger bikin.
  • Têketin û çavdêrîkirin: Têketinên hêdî bikar bînin da ku astengiyan bibînin û performansa malperê bi berdewamî baştir bikin.

评论

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

Scroll to Top