د هیسټیا سی پی پی ایچ پی-ایف پی ایم ډیر بار لاندې دی؟ د متحرک ویب پاڼې ۵۰۰ تېروتنه؟ دا اصلاح به سمدلاسه اغیزمن شي!

آیا تاسو کله هم له دې حالت سره مخ شوي یاست؟د ویب پاڼې لاسرسی ناڅاپه ورو شو، یا حتی د 500 غلطۍ پایله درلوده. د PHP-FPM بیا پیلولو وروسته، دا بیرته عادي حالت ته راستون شو.، خو ستونزه یو څه وخت وروسته بیا راڅرګندیږي؟ دا ډېر مایوسه کوونکی دی!

دا ولې پیښیږي؟په حقیقت کې، دا معمولاد PHP-FPM پروسې حوض په سمه توګه تنظیم شوی نه دی، یا د سرور سرچینې کافي ندي.له امله رامنځته شوی. نن ورځ، موږ به په بشپړه توګه اصلاح کړو HestiaCP د PHP-FPM تر پوښښ لاندې ویب پاڼه د ډبرې په څیر مستحکم کوي!

اصلي دلیل چې ولې PHP-FPM ډیر بار شوی دی

PHP-FPM یود پروسې مدیر، کوم چې د متحرک غوښتنو اداره کولو مسؤلیت لري. که چیرې ترتیب معقول نه وي، نو دا ممکن د دې لامل شي:

  • د سرور سرچینې ختمې شوې دي، د دې لامل کیږي چې PHP-FPM په وخت سره نوي غوښتنو ته ځواب ونه وايي؛
  • ډېرې لږې پروسېکله چې ټرافیک ناڅاپه زیات شي، نو په وخت سره پروسس نشي کیدی؛
  • د پروسې کارول ډېر لوړ دي، د CPU بار د چاودیدو لامل کیږي.

د هیسټیا سی پی پی ایچ پی-ایف پی ایم ډیر بار لاندې دی؟ د متحرک ویب پاڼې ۵۰۰ تېروتنه؟ دا اصلاح به سمدلاسه اغیزمن شي!

څنګه پوه شو چې PHP-FPM ډیر بار شوی دی؟

وکاروی top یا یا htop د CPU او حافظې کارولو لیدلو لپاره قومانده:

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

وګورئ چې دا پروسې څنګه د CPU له 70٪ څخه ډیر نیسي؟ که دا ډیری وخت پیښ شي، ستاسو PHP-FPM باید یوه ستونزه وي!

نو، څنګه موږ کولی شو د PHP-FPM ترتیب غوره کړو ترڅو سرور نور ډیر بار نه وي؟

د PHP-FPM پروسې حوض اصلاح کول (د اصلي پیرامیټر تنظیم کول)

لومړی، خلاص کړئ php-fpm د ترتیب فایلونه:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *خپل د PHP نسخه، لکه PHP8.5، ته بدل کړئ، او دا یې بدل کړئ:/etc/php/8.3/fpm/pool.d/www.conf

د هیسټیا سی پی لخوا ټاکل شوی د پی ایچ پی نسخه پوښتنه وکړئ

v-list-web-domain user domain.com

د مثال په توګه:

v-list-web-domain abc chenweiliang.com

په محصول کې، تاسو به داسې یو څه وګورئ:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.5 

دا پدې مانا ده چې ویب پاڼه کاروي پی پی ایکس ایکسیمکس.

راځئ چې ستاسو د 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

تاسو لیدلی شئ چې ستاسو pm هغه چې کارول کیږي ondemand،که څه هم دا کولی شي د بې کاره وخت په جریان کې د سرچینو کارول کم کړي، کله چې ټرافیک ناڅاپه زیات شي، پروسه ممکن په وخت سره ځواب ورنکړي.، چې پایله یې د 500 تېروتنه ده.

www.conf: د سیسټم جوړ شوی "نړیوال سرچینې حوض"

د PHP-FPM نصبولو وروسته، سیسټم به په اتوماتيک ډول تاسو ته ... چمتو کړي. www.conf دوتنه.
د هغېځای ورکولدا ډېره ساده ده — دا یوازې د پروسې یو ډیفالټ پول دی چې له بکس څخه بهر کار کوي، معمولا ورسره وصل وي ... www-ډاټا د کارونکي ډاونلوډ.

دا ډول حوض په ځانګړي ډول د واحد سایټ چاپیریال لپاره مناسب دی: ترتیب یې سپک دی، او پیرامیټرې ټول عمومي ټیمپلیټونه دي، لکه:

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

که تاسو یوازې یو سایټ کوربه کوئ، تاسو کولی شئ دا په مستقیم او باوري ډول پرته له کوم اضافي ستونزې څخه وکاروئ.

etUFO.org.conf: دودیز حوض

کله چې تاسو ډیری سایټونه چلوئ، تاسو نشئ کولی ټول په ورته حوض کې ګیر وساتئ.
په دې مرحله کې، هیسټیا سی پی به په اتوماتيک ډول د هر سایټ لپاره جلا حوض جوړ کړي، د مثال په توګه... etUFO.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

اصلي توپیر دا دی:د کارونکي هویت، د اوریدلو پته، د پروسو شمیر.

۱. د 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: د ډېرو لږو پروسو له امله د ۵۰۰ غلطیو مخه ونیسئ؛
  • pm.start_servers = 5: د پروسې د ورو پیل څخه مخنیوی وکړئ؛
  • pm.max_requests = 3000:د حافظې د لیکیدو مخنیوی، پروسه په منظم ډول بیا وکاروئ.

۲. د اوږدمهاله اشغال مخنیوي لپاره د PHP سکریپټونو د اجرا کولو وخت محدود کړئ

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

دا کولی شي د ځینو مخه ونیسيد PHP سکریپټونه چې ډیر CPU کاروي کولی شي ستاسو سرور ښکته کړي.

د خوندي کولو وروسته، د PHP پروسه بیا پیل کړئ:

sudo systemctl restart php8.3-fpm

د VPS ترتیب پراساس د PHP-FPM اصلاح کول

د VPS ترتیب مثال:

  • تفصیل: VPS 3 NVMe
  • د ډیسک ځای: 300 GB
  • د CPU کورونه: ۸
  • RAM: 24 GB

ستاسو د VPS ترتیب پورې اړه لري (۸ کور لرونکی CPU، ۲۴ GB رامستاسو د سرور سرچینې له کافي څخه ډیرې دي. د PHP-FPM لپاره، د 24 GB حافظه تاسو ته اجازه درکوي چې د هممهاله پروسو خورا لوی شمیر تنظیم کړئ.

په تولیدي چاپیریال کې، موږ معمولا سیسټم پخپله چمتو کوو، د اپاچي ډیټابیس (لکه...) مای/MariaDB) او کیش (لکه Redis/یاد شویکافي حافظه پرېږدئ (راځئ چې ووایو 8GB-12GB)، پاتې نور... ۱۲ جي بي-۱۶ جي بي رامدا په بشپړ ډول PHP-FPM ته ټاکل کیدی شي.

د هر PHP پروسې د اوسط کارونې پراساس ۱۰ ام بي – ۱۰۰ ام بي د حافظې د کارونې له مخې، ۱ جي بي حافظه تقریبا ۱۶-۲۵ پروسې پرمخ وړلی شي.

لاندې ستاسو لپاره جوړ شوی دی.لوړ همغږي، لوړ فعالیت FPM ترتیبدا ډېر ښه کېدای شي WordPress دا د درنو ترافیکو د اداره کولو وړتیا لري او کولی شي د ترافیکو ناڅاپي زیاتوالي مخه ونیسي چې د سیسټم د ټکر لامل کیږي.

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

💡 ولې دا ترتیب؟

  1. pm.max_children = 300دا یو اصلي اصلاح دی. ستاسو د ۵۰ پروسو پخوانۍ ترتیب د ۲۴ جي بي حافظې لپاره ډېر محافظه کار و. کله چې په ټرافیک کې ناڅاپي زیاتوالی راشي (یا بوټونه چې شالید ډکوي)، ۵۰ پروسې به سمدلاسه ډکې شي، چې د اتصال وخت پای ته رسوي. ۳۰۰ ته یې زیاتول کولی شي ستاسو د سرور د همغږۍ پروسس کولو ظرفیت څو ځله ښه کړي.
  2. pm.start_servers / `لږترلږه_سپیر_سرورونهځکه چې تاسو ۸ CPU کورونه لرئ، تاسو کولی شئ په پیل کې او په نورمال ډول ډیرې بې کاره پروسې وساتئ، کوم چې تاسو ته اجازه درکوي چې د څو کور ګټې څخه ګټه پورته کړئ ترڅو نوي غوښتنې د پروسې رامینځته کیدو ته انتظار کولو پرته سمدلاسه خلاصې شي.
  3. pm.max_requests = 1000له ۵۰۰ څخه ۱۰۰۰ ته لوړ کړئ. ستاسو حافظه لویه ده، او پروسې په مکرر ډول بیا پیل کولو ته اړتیا نلري. ۱۰۰۰ ته لوړول کولی شي د پرله پسې پروسو ویجاړولو او رامینځته کیدو له امله د CPU مصرف کم کړي.

د بدلونونو له کولو وروسته، د بدلونونو د اغیزمن کیدو لپاره د PHP-FPM خدمت بیا پیل کول په یاد ولرئ.

systemctl restart php8.5-fpm

د PHP-FPM حالت څارنه فعال کړئ ترڅو په هر وخت کې د پرمختګ تعقیب وساتئ

د PHP-FPM پروسې څارنه فعاله کړئ او په هر وخت کې یې وګورئد فعالو پروسو اوسنی شمیر او د غوښتنې د انتظار حالت، د سرور د ډیر بار څخه مخنیوي لپاره.

په php-fpm.conf اضافه شوی په:

pm.status_path = /status

بیا، د نګینکس ترتیب:

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

وګورئ چې ایا PHP کومه تېروتنه راپور ورکوي، لکه out of memory،script execution timeout ودرېږه.

د حافظې د لیکیدو مخنیوي لپاره په منظم ډول PHP-FPM بیا پیل کړئ

د تېرېدو وړ cron د اوږدې مودې پروسې د مخنیوي لپاره په منظم ډول د PHP-FPM بیا پیل کولد حافظې لیکونه.

crontab -e

لاندې مهالویش شوی دنده اضافه کړئ ترڅو هره ورځ د سهار په ۳ بجو په اتوماتيک ډول PHP-FPM بیا پیل کړئ:

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

که ستونزه دوام ومومي نو څه به وشي؟ نور اصلاح!

که تاسو لاهم پورته اصلاح تعقیب کوئکله ناکله ۵۰۰ غلطۍ رامنځته کېږي، تاسو کولی شئ د لاندې اصلاح کولو سره دوام ورکړئ:

۱. د PHP اجرا کولو موثریت ښه کولو لپاره OPcache فعال کړئ

که چیرې OPcache لا فعال شوی نه وي، تاسو کولی شئ دا په دې ډول نصب کړئ (د مثال په توګه د اوبنټو په کارولو سره):

sudo apt install php8.5-opcache -y

بیا یې سم کړئ php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0
  • د opcache.validate_timestamps=0
  • د ریښتیني وخت کشف غیر فعال کړئد فایل سیسټم I/O کم کړئ او فعالیت ښه کړئ.
  • په هرصورت، دا پدې مانا ده چې تاسو باید د PHP فایلونو بدلولو وروسته په لاسي ډول کیچ پاک کړئ (د PHP خدمت بیا پیل کړئ).

د ترتیب بدلولو وروسته، تاسو باید د بدلونونو د اغیزمن کیدو لپاره د PHP خدمت بیا پیل کړئ.

sudo systemctl restart php<版本>-fpm

اغېز؟ د PHP پاڼې د اجرا سرعت خورا ښه شوی دی!

۲. د نګینکس ترتیب اصلاح کول

ډاډ ترلاسه کړئ چې د نګینکس اړوند پیرامیټرې معقولې دي، لکه fastcgi_read_timeout دا په مناسب ډول تنظیم کړئ ترڅو د PHP سکریپټونه د اوږدې مودې اجرا کولو له امله د Nginx لخوا پای ته ونه رسیږي:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

لنډیز: د PHP-FPM اصلاح کول او ویب پاڼه به نوره خرابه نشي!

د دې اصلاح وروسته موږ کوم تعدیلات راوستي دي؟

✅ د PHP-FPM پروسې حوض اصلاح کول، وکاروه ondemandاو اصلاح کول pm.max_children پیرامیټر؛
د PHP سکریپټونو د اجرا کولو وخت محدودولد CPU د اوږدې مودې اشغال مخنیوي لپاره؛
د PHP-FPM څارنه فعاله کړئ، په ریښتیني وخت کې د پروسې بار وګورئ؛
د PHP-FPM لاګونو اصلاح کول، په چټکۍ سره د 500 غلطیو حل کول؛
په منظم ډول د PHP-FPM بیا پیل کړئد حافظې د لیکیدو مخه نیسي؛
د OPcache فعالول، د PHP اجرا کولو موثریت ښه کول؛
د نګینکس ترتیب اصلاح کول، د وخت پای ته رسیدو ستونزو څخه د مخنیوي لپاره.

د دې اصلاح کولو وروسته، د PHP-FPM بار به خورا کم شي او د ویب پاڼې عملیات به ډیر مستحکم وي! 🔥

لاړ شه اوس یې هڅه وکړه! 💪🚀

که تاسو لاهم لیواله یاست چې د HestiaCP سره د PHP-FPM ټیمپلیټونو دودیز کولو په اړه نور معلومات زده کړئ، نو دا مقاله به تاسو ته ژوره پوهه درکړي:

👉 د هیسټیا سی پی دودیز PHP-FPM ټیمپلیټ: PHP 8.5 د فعالیت اصلاح کولو رازونه ▼

په دې محتوا کې، تاسو به وګورئ:

  • د لوړ همغږۍ اصلاح کولو تخنیکونه: د مناسب پروسې ترتیب له لارې د غبرګون سرعت څنګه ښه کړو.
  • د امنیتي انزوا حل: د سایټونو ترمنځ د لاسرسي خطرونو څخه مخنیوی وکړئ او د حساب ثبات ډاډمن کړئ.
  • لاګونه او څارنه: د خنډونو موندلو او په دوامداره توګه د ویب پاڼې فعالیت غوره کولو لپاره ورو لاګونه وکاروئ.

امید چن وییلینګ بلاګ ( https://www.chenweiliang.com/ ) شریک شوی "د هیسټیا سی پی پی ایچ پی-ایف پی ایم بار ډیر لوړ دی؟" د متحرک ویب پاڼې ۵۰۰ تېروتنه؟ دا اصلاح به سمدلاسه اغیزمن شي! "، دا ممکن ستاسو لپاره ګټور وي.

د دې مقالې لینک شریکولو ته ښه راغلاست:https://www.chenweiliang.com/cwl-32512.html

د نورو پټو چلونو د خلاصولو لپاره، زموږ د ټیلیګرام چینل سره یوځای کیدو ته ښه راغلاست!

که مو خوښه شوه لایک او شریک کړئ! ستاسو شریکول او خوښول زموږ دوامداره هڅونه ده!

 

评论 评论

ستاسو بریښنالیک پته به خپره نشي. اړین ساحې کارول کیږي * لیبل

پاس شئ