HestiaCP PHP-FPM በከባድ ጭነት ውስጥ ነው? ተለዋዋጭ ድረ-ገጽ 500 ስህተት? ይህ ማመቻቸት ወዲያውኑ ተግባራዊ ይሆናል!

ይህን ሁኔታ አጋጥሞህ ያውቃል?የድረ-ገጽ መዳረሻ በድንገት ቀነሰ ወይም 500 ስህተት አስከትሏል PHP-FPM እንደገና ከጀመረ በኋላ ወደ መደበኛው ተመለሰ።ግን ችግሩ ከተወሰነ ጊዜ በኋላ እንደገና ይታያል? ይህ በጣም ተስፋ አስቆራጭ ነው!

ይህ ለምን እየሆነ ነው?እንደ እውነቱ ከሆነ, ይህ አብዛኛውን ጊዜ ነውየPHP-FPM ሂደት ገንዳ በትክክል አልተዋቀረም ወይም የአገልጋዩ ሀብቶች በቂ አይደሉም።ምክንያት. ዛሬ, እኛ በደንብ እናሻሽላለን HestiaCP ፒኤችፒ-ኤፍፒኤም በመከለያ ስር ድህረ ገጹን እንደ አለት የተረጋጋ ያደርገዋል!

PHP-FPM ከመጠን በላይ የተጫነበት ዋናው ምክንያት

ፒኤችፒ-ኤፍፒኤም የሂደት አስተዳዳሪተለዋዋጭ ጥያቄዎችን የማስተናገድ ኃላፊነት ያለበት። አወቃቀሩ ምክንያታዊ ካልሆነ ወደሚከተለው ሊያመራ ይችላል፡-

  • የአገልጋይ ሀብቶች ተሟጠዋልፒኤችፒ-ኤፍፒኤም ለአዳዲስ ጥያቄዎች በወቅቱ ምላሽ መስጠት እንዳይችል በማድረግ፣
  • በጣም ጥቂት ሂደቶች, ትራፊክ በድንገት ሲጨምር, በጊዜ ሂደት ሊሰራ አይችልም;
  • የሂደቱ አጠቃቀም በጣም ከፍተኛ ነው።የሲፒዩ ጭነት እንዲፈነዳ ያደርጋል።

HestiaCP PHP-FPM በከባድ ጭነት ውስጥ ነው? ተለዋዋጭ ድረ-ገጽ 500 ስህተት? ይህ ማመቻቸት ወዲያውኑ ተግባራዊ ይሆናል!

PHP-FPM ከመጠን በላይ መጫኑን እንዴት ማወቅ ይቻላል?

መጠቀም ይችላል። top ወይም ፡፡ htop ሲፒዩ እና የማህደረ ትውስታ አጠቃቀምን ለማየት ትእዛዝ፡-

top -c

ከሚከተለው ጋር የሚመሳሰል የሂደት መረጃ ካዩ፣ PHP-FPM በከፍተኛ ጭነት እየሰራ ነው ማለት ነው።

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

እነዚህ ሂደቶች ከ70% በላይ ሲፒዩ እንዴት እየወሰዱ እንደሆነ ይመልከቱ? ይህ ብዙ ጊዜ የሚከሰት ከሆነ፣ የእርስዎ PHP-FPM ችግር መኖር አለበት።!

ስለዚህ፣ አገልጋዩ ከመጠን በላይ እንዳይጫን የPHP-FPM ውቅርን እንዴት ማሳደግ እንችላለን?

የ PHP-FPM ሂደት ገንዳ ማመቻቸት (የዋና መለኪያ ማስተካከያ)

መጀመሪያ ይክፈቱ php-fpm የማዋቀር ፋይሎች፡

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *እንደ PHP8.3 ወደ የእርስዎ ፒኤችፒ ስሪት ይቀይሩ እና ወደዚህ ይቀይሩት፡/etc/php/8.3/fpm/pool.d/www.conf

በHestiaCP የተዘጋጀውን የPHP ሥሪት ይጠይቁ

v-list-web-domain user domain.com

ለምሳሌ-

v-list-web-domain abc chenweiliang.com

በውጤቱ ውስጥ እንደዚህ ያለ ነገር ታያለህ፡-

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

ይህ ማለት ድህረ ገጹ ይጠቀማል ማለት ነው። ፒኤችፒ 8.3.

የ 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

ያንን ማየት ይችላሉ pm ጥቅም ላይ ይውላል ondemand:ምንም እንኳን በስራ ፈት ጊዜ የሃብት አጠቃቀምን ሊቀንስ ቢችልም, የትራፊክ ፍሰት በድንገት ሲጨምር, ሂደቱ በጊዜ ምላሽ መስጠት ላይችል ይችላል.500 ስህተት አስከትሏል።

www. conf:系统自带的“万能池”

安装好 PHP-FPM 后,系统会自动丢给你一个 www. conf ሰነድ.
የእሱአቀማመጥ很简单——就是一个开箱即用的默认进程池,通常挂在 www-data 用户下跑。

这种池子特别适合单站点环境:配置轻量,参数都是通用模板,比如:

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

如果你只托管一个站点,直接用它就能稳稳当当,不需要额外折腾。

etዩፎ.org.conf:专属定制池

一旦你要跑多个站点,就不能再让大家挤在同一个池里了。
这时候HestiaCP会自动给每个站点单独开一个池,比如 etዩፎ.org.conf,专门为域名 etufo.org 服务。

常见的玩法是:

  • 换掉用户和组:user = etufo:group = etufo
  • 独立监听:listen = /run/php/etufo.sock
  • 调整进程数,保证高并发下依旧稳如老狗
  • 单独日志文件,排错更清晰

好处显而易见:安全隔离。就算某个站点被攻破,其他站点也能安然无恙。

dummy.conf:摆设文件

dummy.conf 通常是系统给的示例或模板。
它不会真的跑,除非你手动改动并启用。
它的意义更像一本“操作说明书”,告诉你该怎么写一个新的池配置。

为什么要分池?

  • 安全 性:不同站点用不同用户,避免权限乱套。
  • 性能优化:每个池单独调进程数,按流量需求灵活调整。
  • ነጠላ:日志、错误、监听地址都分开,排查问题更轻松。

举个例子:就算 www. conf ወደቀ።etufo.org.conf 依然能照常跑,不会拖垮整台服务器。

实际场景

  • የአንድ ጣቢያ አገልጋይ:只用 www. conf 就够。
  • ባለብዙ ጣቢያ አገልጋይ:每个站点一个独立 .conf,比如 etufo.org.conf。
  • dummy.confለማጣቀሻ ብቻ፣ አይመከርም።

配置对比

www.conf (ነባሪ ገንዳ)

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

etufo.org.conf (ብጁ ገንዳ)

[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

区别主要在于:用户身份、监听地址、进程数量.

1. የ PHP-FPM ሂደት ገንዳ መለኪያዎችን ያስተካክሉ

አወቃቀሩ ከተጠቀመ dynamicይህ አንዳንድ የስራ ሂደቶችን በቅድሚያ ለመጀመር እና በተጠየቀው ድምጽ መሰረት በተለዋዋጭ ሁኔታ ለማስተካከል ዘዴ ነው, ይህም የጥያቄው መጠን በድንገት ሲጨምር ፈጣን ምላሽ ይሰጣል.

የተወሰነ መጠን ያለው ትራፊክ ላላቸው ድርጣቢያዎች እንዲጠቀሙ ይመከራል pm = dynamicምክንያቱም የተወሰነ መጠን ያለው የስራ ፈት ሂደቶችን ጠብቆ ማቆየት እና 500 ስህተቶችን በከፍተኛ ተጓዳኝ ጊዜ ማስወገድ ይችላል።

የመዳረሻ መጠን በጣም ዝቅተኛ ሲሆን እና የማስታወሻ ሃብቶች ጥብቅ ሲሆኑ ብቻ እንዲጠቀሙበት ይመከራል. pm = ondemand ሀብቶችን ለመቆጠብ.

የሚመከር dynamic፣ እና ያመቻቹ pm.max_children እና ሌሎች መለኪያዎች:

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

ለምን እንደዚህ መቀየር ይፈልጋሉ?

  • pm = dynamicበፍላጎት ምክንያት ሊከሰት የሚችልን ጥያቄ መጠበቅን ለማስወገድ ሂደቶችን በተለዋዋጭነት መድብ;
  • pm.max_children = 16በጣም ጥቂት ሂደቶች የተፈጠሩ 500 ስህተቶችን መከላከል;
  • pm.start_servers = 5: ቀስ በቀስ የሂደቱን ጅምር ያስወግዱ;
  • pm.max_requests = 3000:የማህደረ ትውስታ መፍሰስን መከላከል, ሂደቱን በመደበኛነት እንደገና ጥቅም ላይ ማዋል.

2. የረጅም ጊዜ መኖርን ለመከላከል የ PHP ስክሪፕቶችን የሚፈፀሙበትን ጊዜ ይገድቡ

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

ይህ አንዳንዶቹን መከላከል ይችላልበጣም ብዙ ሲፒዩ የሚጠቀሙ የPHP ስክሪፕቶች አገልጋይዎን ሊያወርዱ ይችላሉ።.

ካስቀመጡ በኋላ የ PHP ሂደቱን እንደገና ያስጀምሩ:

sudo systemctl restart php8.3-fpm

የሂደቱን በማንኛውም ጊዜ ለመከታተል የPHP-FPM ሁኔታ ክትትልን ያንቁ

የ PHP-FPM ሂደት ክትትልን ያንቁ እና በማንኛውም ጊዜ ይመልከቱት።የአሁኑ የንቁ ሂደቶች ብዛት እና የጥበቃ ሁኔታን ይጠይቁየአገልጋይ ጭነትን ለማስወገድ።

php-fpm.conf ተጨምሯል፡

pm.status_path = /status

ከዚያ 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;
}

በዚህ መንገድ, ይችላሉ http://yourdomain.com/status PHP-FPMን በተግባር ይመልከቱ!

ችግሮችን በፍጥነት ለመፍታት የPHP-FPM ምዝግብ ማስታወሻዎችን ያሳድጉ

php-fpm.conf አክል ወደ፡

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

በዚህ መንገድ 500 ስህተት በተፈጠረ ቁጥር ምዝግብ ማስታወሻውን በቀጥታ ማየት ይችላሉ፡-

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

ፒኤችፒ ስህተት እንደዘገበው ይመልከቱ out of memory:script execution timeout ጠብቅ.

የማህደረ ትውስታ ፍሳሾችን ለመከላከል PHP-FPMን በመደበኛነት እንደገና ያስጀምሩ

ማለፍ የሚችል cron ለረጅም ጊዜ የሚሄዱ ሂደቶች እንዳይከሰቱ ለመከላከል PHP-FPMን በመደበኛነት እንደገና ያስጀምሩየማህደረ ትውስታ መፍሰስ.

crontab -e

በየቀኑ ከጠዋቱ 3 ሰአት ላይ PHP-FPMን በራስ ሰር ዳግም ለማስጀመር የሚከተለውን የታቀዱ ስራዎችን ያክሉ።

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

ችግሩ ከቀጠለስ? ተጨማሪ ማመቻቸት!

አሁንም ከላይ ያለውን ማመቻቸት ከተከተሉአልፎ አልፎ 500 ስህተቶች ይከሰታሉበሚከተሉት ማሻሻያዎች መቀጠል ይችላሉ፡

1. የPHP አፈፃፀምን ለማሻሻል OPcache ን ያንቁ

OPcache ገና ካልነቃ እንደዚህ ሊጭኑት ይችላሉ (ኡቡንቱን እንደ ምሳሌ በመጠቀም)

sudo apt install php8.3-opcache -y

ከዚያ ያርትዑ php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1

ውጤት? የ PHP ገጽ አፈፃፀም ፍጥነት በጣም ተሻሽሏል!

2. Nginx ውቅር ማመቻቸት

እንደ Nginx ተዛማጅ መለኪያዎች ምክንያታዊ መሆናቸውን ያረጋግጡ fastcgi_read_timeout በረጅም ጊዜ የማስፈጸሚያ ጊዜ ምክንያት የPHP ስክሪፕቶች በNginx እንዳይቋረጡ በትክክል ያስተካክሉት፡

fastcgi_read_timeout 60s;
client_max_body_size 100M;

ማጠቃለያ፡ PHP-FPMን ያሻሽሉ እና ድር ጣቢያው ከአሁን በኋላ አይበላሽም!

ከዚህ ማመቻቸት በኋላ ምን ማስተካከያ አድርገናል?

✅ የ PHP-FPM ሂደት ገንዳን ማመቻቸት, ይጠቀሙ ondemandእና ያመቻቹ pm.max_children መለኪያ;
የ PHP ስክሪፕቶች የሚፈፀሙበትን ጊዜ መገደብየረጅም ጊዜ የሲፒዩ ሥራን ለመከላከል;
የ PHP-FPM ክትትልን አንቃ, የሂደቱን ጭነት በእውነተኛ ጊዜ ይመልከቱ;
የ PHP-FPM ምዝግብ ማስታወሻዎችን ማመቻቸት, 500 ስህተቶችን በፍጥነት መፍታት;
PHP-FPM በመደበኛነት እንደገና ያስጀምሩ, የማስታወስ ፍሳሾችን መከላከል;
OPcache ን አንቃየ PHP አፈፃፀምን ማሻሻል;
የNginx ውቅረትን ማመቻቸት, የእረፍት ጊዜ ችግሮችን ለማስወገድ.

ከዚህ ማመቻቸት በኋላ የPHP-FPM ጭነት በእጅጉ ይቀንሳል እና የድር ጣቢያው አሠራር የበለጠ የተረጋጋ ይሆናል! 🔥

አሁን ይሞክሩት! 💪🚀

ተስፋ Chen Weiliang ብሎግ ( https://www.chenweiliang.com/ ) የተጋራ "HestiaCP PHP-FPM ጭነት በጣም ከፍተኛ ነው? ተለዋዋጭ ድረ-ገጽ 500 ስህተት? ይህ ማመቻቸት ወዲያውኑ ተግባራዊ ይሆናል! ”፣ ለእርስዎ ጠቃሚ ሊሆን ይችላል።

እንኳን በደህና መጡ የዚህን ጽሁፍ ማገናኛ ለማጋራት፡-https://www.chenweiliang.com/cwl-32512.html

ተጨማሪ ድብቅ ዘዴዎችን ለመክፈት የቴሌግራም ቻናላችንን እንኳን በደህና መጡ።

ከወደዳችሁት ሼር እና ላይክ አድርጉ! የእርስዎ ማጋራቶች እና መውደዶች የእኛ ቀጣይ ተነሳሽነት ናቸው!

 

评论ሺ评论评论评论 ፡፡

የኢሜል አድራሻዎ አይታተምም። 项 已 用 ፡፡ * 标注

ወደ ላይ ሸብልል