Директорияи мақолаҳо
Оё шумо ягон бор бо чунин ҳолат дучор шудаед? Вебсайти шумо ногаҳон суст мешавад ё ҳатто хатогии 500-ро медиҳад. Бозоғоз кардани PHP-FPM онро ба ҳолати муқаррарӣ бармегардонад , аммо мушкилот пас аз муддате дубора пайдо мешавад? Ин бениҳоят ноумедкунанда аст!
Чаро ин рӯй медиҳад? Дар асл, ин одатан аз сабаби конфигуратсияи нодурусти ҳавзи равандҳои PHP-FPM ё захираҳои нокифояи сервер ба вуҷуд меояд. Имрӯз мо PHP-FPM-ро таҳти HestiaCP пурра оптимизатсия хоҳем кард , то устувории пойдори вебсайти шуморо таъмин кунем!
Сабаби асосии PHP-FPM аз ҳад зиёд бор кардан
PHP-FPM менеҷери равандҳо барои PHP мебошад , ки барои коркарди дархостҳои динамикӣ масъул аст. Танзимоти номуносиб метавонад ба инҳо оварда расонад:
- Захираҳои сервер тамом шудаанд, боиси он мегардад, ки 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
Оё шумо мебинед, ки ин равандҳо зиёда аз 70% CPU-ро истифода мебаранд? Агар ин зуд-зуд рух диҳад, пас дар 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
Нусхаи PHP-и аз ҷониби HestiaCP муқарраршударо пурсед
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 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-data Боргирии корбар.
Ин намуди ҳавз махсусан барои муҳитҳои яккаса мувофиқ аст: конфигуратсия сабук аст ва параметрҳо ҳама қолибҳои умумӣ мебошанд, ба монанди:
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm.max_children = 5
Агар шумо танҳо як сайтро ҷойгир кунед, шумо метавонед онро мустақиман ва боэътимод бе ягон мушкилоти иловагӣ истифода баред.
etUFO.org.conf: Ҳавзи фармоишӣ
Пас аз он ки шумо якчанд сайтро идора мекунед, шумо наметавонед ҳамаро дар як ҳавз банд нигоҳ доред.
Дар ин лаҳза, HestiaCP ба таври худкор барои ҳар як сайт ҳавзи алоҳида эҷод мекунад, масалан... 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
Фарқиятҳои асосӣ инҳоянд: шахсияти корбар, суроғаи гӯшкунӣ ва шумораи равандҳо.
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, ки CPU-и аз ҳад зиёдро истеъмол мекунанд, пешгирӣ мекунад.
Пас аз захиракунӣ, раванди PHP-ро аз нав оғоз кунед:
sudo systemctl restart php8.3-fpmPHP-FPM-ро дар асоси конфигуратсияи VPS оптимизатсия кунед
Намунаи танзимоти VPS:
- Тавсиф: VPS 3 NVMe
- Фазои диск: 300 ГБ
- Ҳастаҳои CPU: 8
- RAM: 24 GB
Бар асоси конфигуратсияи VPS-и шумо ( 8 ядрои CPU, 24 ГБ RAM ), захираҳои сервери шумо аз ҳад зиёд кофӣ мебошанд. Барои PHP-FPM, 24 ГБ RAM ба шумо имкон медиҳад, ки шумораи хеле зиёди равандҳои ҳамзамонро танзим кунед.
Дар муҳити истеҳсолӣ, мо одатан барои худи система, пойгоҳҳои додаҳои Apache (масалан, MySQL /MariaDB) ва кэшҳо (масалан, Redis / Memcached ) хотираи кофӣ (масалан, 8-12 ГБ) ҷудо мекунем ва боқимондаи 12-16 ГБ хотираро пурра ба PHP-FPM ҷудо мекунем.
Бар асоси истифодаи миёнаи хотира аз 40MB-60MB барои як раванди PHP , 1 ГБ хотира метавонад тақрибан 16-25 равандро иҷро кунад.
Дар зер конфигуратсияи 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
💡 Чаро ин танзимот?
pm.max_children = 300Ин як беҳсозии аслӣ аст. Конфигуратсияи қаблии 50 раванд барои хотираи 24 ГБ хеле муҳофизакор буд. Ҳангоми дучор шудан бо афзоиши ногаҳонии трафик (ё ботҳо заминаро пур мекунанд), 50 раванд фавран аз кор мебароянд ва боиси тайм-аутҳои пайвастшавӣ мешаванд. Афзоиши он то 300 метавонад иқтидори коркарди ҳамзамони сервери шуморо якчанд маротиба беҳтар кунад.pm.start_servers/ `мин_серверҳои_эҳтиётӣАзбаски шумо 8 ядрои CPU доред, шумо метавонед дар аввал ва одатан равандҳои бештари бекорро нигоҳ доред, ки ба шумо имкон медиҳад аз бартарии бисёрҳастаӣ истифода баред, то дархостҳои нав фавран бидуни интизории эҷоди раванд кушода шаванд.pm.max_requests = 1000Аз 500 то 1000 зиёд кунед. Хотираи шумо калон аст ва равандҳоро зуд-зуд аз нав оғоз кардан лозим нест. Афзоиш то 1000 метавонад истеъмоли CPU-ро, ки дар натиҷаи нобудшавии зуд-зуд ва эҷоди равандҳо ба вуҷуд меояд, кам кунад.
Сабти суръати сустро бинед:
tail -f /var/log/php8.5-fpm.log.slowtail -f /var/log/php8.4-fpm.log.slow
Пас аз ворид кардани тағирот, фаромӯш накунед, ки хидмати PHP-FPM-ро аз нав оғоз кунед, то тағиротҳо эътибор пайдо кунанд.
systemctl restart php8.5-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
Бубинед, ки оё PHP дар бораи хатогӣ хабар медиҳад, масалан out of memory,script execution timeout Интизор шавед.
Барои пешгирии ихроҷи хотира PHP-FPM-ро мунтазам бозоғоз намоед
гузаштан мумкин аст cron PHP-FPM-ро мунтазам бозоғоз намоед, то равандҳои тӯлонӣ аз боиси он пешгирӣ карда шавандИхроҷи хотира.
crontab -e
Барои ба таври худкор бозоғоз кардани PHP-FPM дар соати 3 ҳар рӯз вазифаи ба нақша гирифташудаи зеринро илова кунед:
0 3 * * * /usr/sbin/service php8.5-fpm restart
Чӣ мешавад, агар мушкилот боқӣ монад? Оптимизатсияи минбаъда!
Агар шумо пас аз риояи беҳсозии дар боло зикршуда баъзан бо хатогии 500 дучор шавед , шумо метавонед бо беҳсозии зерин идома диҳед:
1. OPcache-ро барои беҳтар кардани самаранокии иҷрои PHP фаъол созед
Агар OPcache ҳанӯз фаъол нашуда бошад, шумо метавонед онро чунин насб кунед (бо истифода аз Ubuntu ҳамчун мисол):
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
- Муайянкунии вақти воқеиро ғайрифаъол кунедВуруд/Хуруҷи системаи файлиро кам кунед ва самаранокиро беҳтар созед.
Аммо, ин маънои онро дорад, ки пас аз тағир додани файлҳои PHP, шумо бояд кэшро дастӣ тоза кунед (хидмати PHP-ро аз нав оғоз кунед).
Пас аз тағир додани танзимот, барои эътибор пайдо кардани тағиротҳо, шумо бояд хидмати PHP-ро аз нав оғоз кунед.
sudo systemctl restart php<版本>-fpmТаъсир? Суръати иҷрои саҳифаи 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, барои пешгирии ишғоли CPU дарозмуддат;
✅ Мониторинги PHP-FPM-ро фаъол созед, дидани сарбории раванд дар вақти воқеӣ;
✅ Оптимизатсияи гузоришҳои PHP-FPM, зуд бартараф кардани хатогиҳои 500;
✅ PHP-FPM-ро мунтазам бозоғоз намоед, пешгирии ихроҷи хотира;
✅ OPcache-ро фаъол созед, баланд бардоштани самаранокии иҷрои PHP;
✅ Оптимизатсияи конфигуратсияи Nginx, барои роҳ надодан ба мушкилоти вақтхушӣ.
Пас аз ин оптимизатсия, сарбории PHP-FPM хеле кам мешавад ва кори вебсайт устувортар хоҳад шуд! 🔥
Ҳоло биравед, кӯшиш кунед! 💪🚀
Агар шумо то ҳол мехоҳед дар бораи танзим кардани шаблонҳои PHP-FPM бо HestiaCP маълумоти бештар гиред, пас ин мақола ба шумо фаҳмиши амиқтар медиҳад:
👉 Шаблони фармоишии PHP-FPM HestiaCP: Асрори беҳсозии самаранокии PHP 8.5 ▼
Дар ин мундариҷа шумо хоҳед дид:
- Усулҳои беҳсозии ҳамзамон: Чӣ гуна суръати вокунишро тавассути конфигуратсияи оқилонаи раванд беҳтар кардан мумкин аст.
- Ҳалли изолятсияи амниятӣ: Аз хатарҳои дастрасии байнисоҳавӣ худдорӣ кунед ва устувории ҳисобро таъмин намоед.
- Сабтҳо ва мониторинг: Барои муайян кардани монеаҳо ва беҳсозии пайвастаи кори вебсайт аз сабтҳои суст истифода баред.
Умедворем, ки мақолаи "HestiaCP PHP-FPM аз ҳад зиёд бор шудааст? Хатои вебсаҳифаи динамикӣ 500? Ин усули оптимизатсия натиҷаҳои фаврӣ нишон медиҳад!", ки дар блоги Чен Вейлианг ( https://www.chenweiliang.com/ ) мубодила шудааст, барои шумо муфид хоҳад буд.
Озодона истиноди ин мақоларо мубодила кунед: https://www.chenweiliang.com/cwl-32512.html

