HestiaCP PHP-FPM katta yuk ostidami? Dinamik veb-sahifa 500 xatosi? Ushbu optimallashtirish darhol kuchga kiradi!

Siz hech qachon bunday holatga duch kelganmisiz?Veb-saytga kirish to'satdan sekinlashdi yoki hatto 500 xatoga olib keldi, PHP-FPMni qayta ishga tushirgandan so'ng u normal holatga qaytdi., lekin muammo bir muncha vaqt o'tgach yana paydo bo'ladimi? Bu juda xafa!

Nima uchun bu sodir bo'layapti?Aslida, bu odatdaPHP-FPM jarayonlar puli toʻgʻri sozlanmagan yoki server resurslari yetarli emas.tomonidan yuzaga kelgan. Bugun biz yaxshilab optimallashtiramiz HestiaCP Kaput ostidagi PHP-FPM veb-saytni tosh kabi barqaror qiladi!

PHP-FPM haddan tashqari yuklanishining asosiy sababi

PHP-FPM bu aJarayon menejeri, bu dinamik so'rovlarni boshqarish uchun mas'uldir. Agar konfiguratsiya mantiqiy bo'lmasa, u quyidagilarga olib kelishi mumkin:

  • Server resurslari tugadi, PHP-FPM yangi so'rovlarga o'z vaqtida javob bera olmasligiga olib keladi;
  • Juda oz jarayonlar, trafik to'satdan ko'payganda, uni o'z vaqtida qayta ishlash mumkin emas;
  • Jarayondan foydalanish juda yuqori, CPU yukining portlashiga olib keladi.

HestiaCP PHP-FPM katta yuk ostidami? Dinamik veb-sahifa 500 xatosi? Ushbu optimallashtirish darhol kuchga kiradi!

PHP-FPM haddan tashqari yuklanganligini qanday aniqlash mumkin?

foydalanishi mumkin top Yoki htop CPU va xotiradan foydalanishni ko'rish buyrug'i:

top -c

Agar siz quyidagiga o'xshash jarayon ma'lumotlarini ko'rsangiz, bu PHP-FPM yuqori yuk ostida ishlayotganligini anglatadi:

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

Ushbu jarayonlar protsessorning 70% dan ortig'ini qanday egallashiga qarang? Agar bu tez-tez sodir bo'lsa, sizning PHP-FPM Muammo bo'lishi kerak!

Xo'sh, server ortiqcha yuklanmasligi uchun PHP-FPM konfiguratsiyasini qanday optimallashtirishimiz mumkin?

PHP-FPM jarayonlar hovuzini optimallashtirish (asosiy parametrlarni sozlash)

Birinchidan, oching php-fpm Konfiguratsiya fayllari:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *PHP8.3 kabi PHP versiyangizga o'zgartiring va uni quyidagicha o'zgartiring:/etc/php/8.3/fpm/pool.d/www.conf

HestiaCP tomonidan o'rnatilgan PHP versiyasini so'rang

v-list-web-domain user domain.com

Masalan:

v-list-web-domain abc chenweiliang.com

Chiqishda siz shunga o'xshash narsani ko'rasiz:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Bu sayt foydalanadi degan ma'noni anglatadi PHP 8.3.

Keling, PHP-FPM konfiguratsiyasini ko'rib chiqaylik:

[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

Siz buni ko'rishingiz mumkin pm Ishlatilgani ondemand,Bo'sh vaqt davomida resursdan foydalanishni kamaytirishi mumkin bo'lsa-da, trafik to'satdan ko'payganda, jarayon o'z vaqtida javob bera olmasligi mumkin., natijada 500 xato.

1. PHP-FPM jarayon hovuz parametrlarini sozlang

Agar konfiguratsiya ishlatilsa dynamicBu ba'zi ish jarayonlarini oldindan boshlash va ularni so'rov hajmiga qarab dinamik ravishda sozlash usuli bo'lib, so'rov hajmi to'satdan oshganida tezroq javob berishi mumkin.

Muayyan trafik miqdori bo'lgan veb-saytlar uchun foydalanish tavsiya etiladi pm = dynamicChunki u ma'lum miqdordagi bo'sh jarayonlarni saqlab turishi va yuqori parallellik vaqtida 500 ta xatolikdan qochishi mumkin.

Uni faqat kirish hajmi juda past va xotira resurslari tor bo'lganda ishlatish tavsiya etiladi. pm = ondemand Resurslarni tejash uchun.

Tavsiya etilgan ondemand, va optimallashtirish pm.max_children Va boshqa parametrlar:

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

Nega buni shunday o'zgartirmoqchisiz?

  • pm = dynamic: Talab tufayli yuzaga kelishi mumkin bo'lgan so'rovni kutishning oldini olish uchun jarayonlarni moslashuvchanroq taqsimlang;
  • pm.max_children = 16: Juda oz jarayonlardan kelib chiqqan 500 ta xatoning oldini olish;
  • pm.start_servers = 5: Jarayonni sekin ishga tushirishdan saqlaning;
  • pm.max_requests = 3000:Xotira oqishining oldini olish, jarayonni muntazam ravishda qayta ishlang.

2. PHP skriptlarining uzoq muddat band bo'lishining oldini olish uchun bajarilish vaqtini cheklang

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

Bu ba'zilarini oldini oladiJuda ko'p CPU ishlatadigan PHP skriptlari serveringizni buzishi mumkin.

Saqlagandan so'ng, PHP jarayonini qayta ishga tushiring:

sudo systemctl restart php8.3-fpm

Istalgan vaqtda taraqqiyotni kuzatib borish uchun PHP-FPM holati monitoringini yoqing

PHP-FPM jarayoni monitoringini yoqing va uni istalgan vaqtda ko‘ringJoriy faol jarayonlar soni va so‘rovni kutish holati, serverning haddan tashqari yuklanishini oldini olish uchun.

php-fpm.conf Qo'shilgan:

pm.status_path = /status

Keyin Nginx konfiguratsiyasi:

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;
}

Shu tarzda, mumkin http://yourdomain.com/status PHP-FPMni amalda tekshiring!

Muammolarni tezda bartaraf etish uchun PHP-FPM jurnallarini optimallashtiring

php-fpm.conf Qo'shish:

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

Shunday qilib, 500 xatolik yuzaga kelganda, siz to'g'ridan-to'g'ri jurnalni ko'rishingiz mumkin:

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

PHP xato haqida xabar beradimi yoki yo'qligini tekshiring, masalan out of memory,script execution timeout Kutmoq.

Xotira oqishini oldini olish uchun PHP-FPM-ni muntazam ravishda qayta ishga tushiring

o'tishga qodir cron Uzoq davom etadigan jarayonlar sabab bo'lishining oldini olish uchun PHP-FPM-ni muntazam ravishda qayta ishga tushiringXotiraning oqishi.

crontab -e

Har kuni soat 3 da PHP-FPM ni avtomatik ravishda qayta ishga tushirish uchun quyidagi rejalashtirilgan vazifani qo'shing:

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

Muammo davom etsa-chi? Qo'shimcha optimallashtirish!

Agar siz hali ham yuqoridagi optimallashtirishga amal qilsangizVaqti-vaqti bilan 500 ta xatolik yuzaga keladi, siz quyidagi optimallashtirishlarni davom ettirishingiz mumkin:

1. PHP ijro samaradorligini oshirish uchun OPcache-ni yoqing

Agar OPcache hali yoqilmagan bo'lsa, uni shunday o'rnatishingiz mumkin (misol sifatida Ubuntu'dan foydalanib):

sudo apt install php8.3-opcache -y

keyin tahrir qiling php.ini:

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

Effekt? PHP sahifasini bajarish tezligi ancha yaxshilandi!

2. Nginx konfiguratsiyasini optimallashtirish

Nginx bilan bog'liq parametrlar o'rtacha ekanligiga ishonch hosil qiling, masalan fastcgi_read_timeout PHP skriptlari Nginx tomonidan uzoq bajarilish vaqti tufayli tugatilishiga yo'l qo'ymaslik uchun uni mos ravishda sozlang:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Xulosa: PHP-FPM-ni optimallashtiring va veb-sayt endi buzilmaydi!

Ushbu optimallashtirishdan keyin qanday tuzatishlar kiritdik?

✅ PHP-FPM jarayonlar pulini optimallashtirish, foydalaning ondemandVa optimallashtirish pm.max_children parametr;
PHP skriptlarining bajarilish vaqtini cheklash, uzoq muddatli CPU ishg'ol oldini olish uchun;
PHP-FPM monitoringini yoqing, real vaqtda jarayon yukini ko'rish;
PHP-FPM jurnallarini optimallashtirish, 500 ta xatoni tezda bartaraf etish;
PHP-FPMni muntazam ravishda qayta ishga tushiring, xotira oqishini oldini olish;
OPcache-ni yoqing, PHP ijro samaradorligini oshirish;
Nginx konfiguratsiyasini optimallashtirish, vaqt tugashi bilan bog'liq muammolarni oldini olish uchun.

Ushbu optimallashtirishdan so'ng, PHP-FPM yuki sezilarli darajada kamayadi va veb-sayt ishi yanada barqaror bo'ladi! 🔥

Hozir boring, sinab ko'ring! 💪🚀

Umid qilamanki, Chen Veyliang blogi ( https://www.chenweiliang.com/ ) birgalikda "HestiaCP PHP-FPM yuki juda yuqorimi? Dinamik veb-sahifa 500 xatosi? Ushbu optimallashtirish darhol kuchga kiradi! ”, bu siz uchun foydali bo'lishi mumkin.

Ushbu maqolaning havolasini baham ko'rish uchun xush kelibsiz:https://www.chenweiliang.com/cwl-32512.html

Ko'proq yashirin fokuslarni ochish uchun🔑 Telegram kanalimizga qo'shiling!

Baham ko'ring va yoqsa like! Sizning aktsiyalaringiz va yoqtirishlaringiz bizning doimiy motivatsiyasimizdir!

 

发表 评论

Sizning elektron pochta manzilingiz nashr etilmaydi. 必填 项 已 用 * Yorliq

Top o'ting