Maqolalar katalogi
HestiaCP Server protsessorining ko'tarilishi? PHP-FPM jarayonini optimallashtirish bo'yicha to'liq qo'llanma!

Server CPU har doim 100% dami? Fan vahshiyona aylanyaptimi? Veb-sayt ochilish tezligi sekinlashadimi?Aybdor php-fpm bo'lishi mumkin!
Men yaqinda kashf qildim chenweiliang.com Bu PHP puli php-fpm Jarayon protsessorni aqldan ozdirdi va server qulab tushdi!
Serverni jonlantirish uchun men bir qator optimallashtirish usullarini sinab ko'rdim va nihoyat protsessordan foydalanishni kamaytirishga muvaffaq bo'ldim.
Keling, buni baham ko'raylik Samarali optimallashtirish bo'yicha qo'llanma! 🚀
1. Php-fpm jarayonlari sonini cheklash
php-fpm standart sozlamalari bo'lishi mumkincheksizJarayon nazoratsiz ravishda yaratiladi, bu esa server protsessorining haddan tashqari yuklanishiga olib keladi.
Uni optimallashtirish uchun biz jarayonni boshqarish parametrlarini o'zgartirishimiz mumkin.
yoqish; ishga tushirish 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.
Quyidagi parametrlarni toping va o'zgartiring:
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 后自动退出
Keyin qayta ishga tushiring php-fpm Uni samarali qilish uchun:
sudo systemctl restart php-fpm
✅ effekt: php-fpm protsessor resurslarini ortiqcha iste'mol qilishining oldini olish uchun jarayonlar sonini cheklang.
2. OPCache-ni yoqing (PHP ish faoliyatini yaxshilash uchun)
PHP har safar bajarilganda kodni qayta ishlaydi, bu esa resurslarni behuda sarflashdir.
Yechim? OPCache-ni yoqing va PHP kodingizni keshlang!
O'zgartirishlar php.ini hujjat:
sudo nano /etc/php/*/fpm/php.ini
Quyidagilarni qo'shing yoki o'zgartiring:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Saqlagandan so'ng, PHP jarayonini qayta ishga tushiring:
sudo systemctl restart php8.3-fpm
✅ effekt: PHP kodini qayta-qayta tahlil qilishni qisqartirish, CPU yukini kamaytirish va bajarish samaradorligini oshirish.
3. PHP skriptlarining maksimal bajarilish vaqtini cheklash
Agar PHP skripti juda uzoq vaqt ishlasa, protsessor resurslari doimiy ravishda band bo'ladi.
O'rtacha kutish muddatini belgilash "o'jar" jarayonlarning serverni uzoq vaqt egallashini oldini oladi.
yoqish; ishga tushirish php.ini hujjat:
sudo nano /etc/php/*/fpm/php.ini
Quyidagi parametrlarni o'zgartiring:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Keyin PHP jarayonini qayta ishga tushiring:
sudo systemctl restart php-fpm
✅ effekt: PHP jarayonlarining uzoq vaqt ishlashiga yo'l qo'ymaslik va CPU resurslari chiqindilarini kamaytirish.
4. Tekshiring MySQL Sekin so'rov
PHP-FPM yuqori yukga ega,Bunga sekin SQL so'rovi sabab bo'lishi mumkin!
Yoqish; ishga tushirish MySQL Sekin so'rovlar jurnali, ushlab turgan SQL iboralarini toping.
MySQL konfiguratsiya faylini tahrirlang:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Qo'shish:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Saqlagandan so'ng, MySQL-ni qayta ishga tushiring:
sudo systemctl restart mysql
Keyin foydalaning mysqldumpslow Sekin so'rovlarni tahlil qiling:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ effekt: Vaqtni talab qiluvchi SQL so'rovlarini toping, ma'lumotlar bazasi ishlashini optimallashtiring va PHP yukini bilvosita kamaytiring.
5. Cheklovlar Yashirilgan Resurslardan foydalanish
Jarayonlar ro'yxatiga qarab, men topdim Memkeshlangan jarayon protsessoridan foydalanish 24.8% ni tashkil qiladi!
Ehtimol, keshni ajratish juda katta bo'lib, protsessor katta hajmdagi ma'lumotlarni qayta ishlashga olib keladi.
Tuzatish memcached Konfiguratsiya:
sudo nano /etc/memcached.conf
Qayta ko'rib chiqish:
-m 32 # 限制 Memcached 内存使用 32MB
Keyin qayta ishga tushiring:
sudo systemctl restart memcached
✅ effekt: Memcached jarayonining protsessor yukini kamaytirish va kesh samaradorligini oshirish.
6. Statik resurslarni keshlash uchun Nginx-ni yoqing
Ko'pincha PHP ko'p sonli so'rovlarni qayta ishlaydi CSS, JS, rasmlar, lekin bu fayllar PHP tahliliga umuman muhtoj emas!
Yechim? Statik resurslarni keshlash uchun Nginx-dan foydalaning!
Nginx konfiguratsiyasini tahrirlash:
sudo nano /etc/nginx/nginx.conf
Qo'shish:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Saqlagandan so'ng, Nginx-ni qayta ishga tushiring:
sudo systemctl restart nginx
✅ effekt: PHP statik fayllarni qayta ishlash sonini kamaytiring va protsessordan foydalanishni kamaytiring.
7. Eng ko'p CPU ishlatadigan PHP skriptini toping
Agar optimallashtirishdan keyin protsessor hali ham juda yuqori bo'lsa, ba'zi PHP skriptlari vahshiy ishlayotgan bo'lishi mumkin.
Eng yuqori protsessordan foydalanilgan PHP jarayonini bilish uchun quyidagi buyruqdan foydalaning:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Agar PHP skripti juda ko'p protsessorni egallayotganini aniqlasangiz, uni to'g'ridan-to'g'ri o'ldirishingiz mumkin:
kill -9 PID
✅ effekt:"Yomon olma" ni aniq aniqlang va PHP jarayoni protsessorni uzoq vaqt egallashiga yo'l qo'ymang.
Xulosa: PHP-FPMni optimallashtirishning 7 usuli
✅ PHP-FPM jarayonlari sonini cheklang, CPU ortiqcha yuklanishini oldini olish uchun
✅ OPCache-ni yoqing, PHP kodining takroriy tahlilini kamaytirish
✅ PHP vaqt tugashini sozlash, uzoq muddatli operatsiyani oldini olish uchun
✅ MySQL sekin so'rovlarini tekshirish, ma'lumotlar bazasi so'rovi ishlashini optimallashtirish
✅ Memcached xotirani sozlang, CPU yukini kamaytirish
✅ Nginx statik keshini yoqing, PHP tahlil qilish yukini kamaytirish
✅ Yuqori protsessorli PHP skriptlarini toping, aniq optimallashtirish
Xulosa
Serverni optimallashtirish fitnesga o'xshaydi, siz aniq o'zgartirishlar kiritishingiz va chalkashmasligingiz kerak!
Bir qator optimallashtirishlardan so'ng, mening serverim protsessor yuklamasi pasaydi 80% dan 15% gacha, veb-sayt ikki baravar tez ochiladi!
Agar serveringizda shunga o'xshash muammolar bo'lsa, ushbu usullarni sinab ko'ring! 💪
???? Hoziroq harakat qiling! PHP-FPM-ni optimallashtiring va serveringizni saqlang! ????
Umid qilamanki, Chen Veyliang blogi ( https://www.chenweiliang.com/ ) "HestiaCP php-fpm jarayoni juda ko'p CPU resurslarini oladi, uni qanday optimallashtirish mumkin? ”, bu siz uchun foydali bo'lishi mumkin.
Ushbu maqolaning havolasini baham ko'rish uchun xush kelibsiz:https://www.chenweiliang.com/cwl-32490.html
