የአንቀጽ ማውጫ
- 1 PHP-FPM ከመጠን በላይ የተጫነበት ዋናው ምክንያት
- 2 የ PHP-FPM ሂደት ገንዳ ማመቻቸት (የዋና መለኪያ ማስተካከያ)
- 3 የሂደቱን በማንኛውም ጊዜ ለመከታተል የPHP-FPM ሁኔታ ክትትልን ያንቁ
- 4 ችግሮችን በፍጥነት ለመፍታት የPHP-FPM ምዝግብ ማስታወሻዎችን ያሳድጉ
- 5 የማህደረ ትውስታ ፍሳሾችን ለመከላከል PHP-FPMን በመደበኛነት እንደገና ያስጀምሩ
- 6 ችግሩ ከቀጠለስ? ተጨማሪ ማመቻቸት!
- 7 ማጠቃለያ፡ PHP-FPMን ያሻሽሉ እና ድር ጣቢያው ከአሁን በኋላ አይበላሽም!
ይህን ሁኔታ አጋጥሞህ ያውቃል?የድረ-ገጽ መዳረሻ በድንገት ቀነሰ ወይም 500 ስህተት አስከትሏል PHP-FPM እንደገና ከጀመረ በኋላ ወደ መደበኛው ተመለሰ።ግን ችግሩ ከተወሰነ ጊዜ በኋላ እንደገና ይታያል? ይህ በጣም ተስፋ አስቆራጭ ነው!
ይህ ለምን እየሆነ ነው?እንደ እውነቱ ከሆነ, ይህ አብዛኛውን ጊዜ ነውየPHP-FPM ሂደት ገንዳ በትክክል አልተዋቀረም ወይም የአገልጋዩ ሀብቶች በቂ አይደሉም።ምክንያት. ዛሬ, እኛ በደንብ እናሻሽላለን HestiaCP ፒኤችፒ-ኤፍፒኤም በመከለያ ስር ድህረ ገጹን እንደ አለት የተረጋጋ ያደርገዋል!
PHP-FPM ከመጠን በላይ የተጫነበት ዋናው ምክንያት
ፒኤችፒ-ኤፍፒኤም የሂደት አስተዳዳሪተለዋዋጭ ጥያቄዎችን የማስተናገድ ኃላፊነት ያለበት። አወቃቀሩ ምክንያታዊ ካልሆነ ወደሚከተለው ሊያመራ ይችላል፡-
- የአገልጋይ ሀብቶች ተሟጠዋልፒኤችፒ-ኤፍፒኤም ለአዳዲስ ጥያቄዎች በወቅቱ ምላሽ መስጠት እንዳይችል በማድረግ፣
- በጣም ጥቂት ሂደቶች, ትራፊክ በድንገት ሲጨምር, በጊዜ ሂደት ሊሰራ አይችልም;
- የሂደቱ አጠቃቀም በጣም ከፍተኛ ነው።የሲፒዩ ጭነት እንዲፈነዳ ያደርጋል።

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
