HestiaCP php-fpm jarayoni juda ko'p CPU resurslarini oladi.

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

HestiaCP php-fpm jarayoni juda ko'p CPU resurslarini oladi.

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 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_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! ????

发表 评论

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

Maqolalar katalogi
Top o'ting