სტატიების დირექტორია
HestiaCP სერვერის CPU-ს პიკები? PHP-FPM პროცესის ოპტიმიზაციის სრული სახელმძღვანელო!

თქვენი სერვერის CPU მუდმივად 100%-ით არის დატვირთული? ვენტილატორები გიჟურად ბრუნავენ? თქვენი ვებსაიტი ნელა იტვირთება? შესაძლოა, მიზეზი php-fpm იყოს!
ახლახან აღმოვაჩინე chenweiliang.com ეს PHP აუზი php-fpm პროცესმა CPU საშინლად დატვირთა და სერვერი გაითიშა!
სერვერის აღსადგენად, ოპტიმიზაციის რამდენიმე მეთოდი ვცადე და საბოლოოდ შევამცირე პროცესორის გამოყენება.
ახლა კი, მოდით, გავაზიაროთ ეს ეფექტური ოპტიმიზაციის სახელმძღვანელო ! 🚀
1. შეზღუდეთ php-fpm პროცესების რაოდენობა
php-fpm-ის ნაგულისხმევ პარამეტრებმა შეიძლება შექმნას პროცესების შეუზღუდავი რაოდენობა , რაც გამოიწვევს სერვერის CPU-ს გადატვირთვას.
მისი ოპტიმიზაციისთვის, ჩვენ შეგვიძლია შევცვალოთ პროცესის მართვის პარამეტრები.
打開 php-fpm კონფიგურაციის ფაილები:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *გადადით თქვენს PHP ვერსიაზე, მაგალითად PHP8.3-ზე და შეცვალეთ ის შემდეგნაირად:
/etc/php/8.3/fpm/pool.d/www.conf
HestiaCP-ის მიერ დაყენებული PHP ვერსიის მოთხოვნა
v-list-web-domain user domain.com
Მაგალითად:
v-list-web-domain abc chenweiliang.com
გამომავალში ნახავთ მსგავსი რამ:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
ეს მიუთითებს, რომ ვებსაიტი იყენებს PHP 8.3-ს.
იპოვნეთ და შეცვალეთ შემდეგი პარამეტრები:
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 后自动退出
შემდეგ გადატვირთეთ php-fpm იმისათვის, რომ ის ეფექტური იყოს:
sudo systemctl restart php-fpm
✅ეფექტი : ზღუდავს პროცესების რაოდენობას, რათა თავიდან აიცილოს php-fpm-ის მიერ CPU რესურსების ზედმეტად მოხმარება.
2. ჩართეთ OPCache (PHP მუშაობის გასაუმჯობესებლად)
PHP ასწორებს კოდს ყოველ ჯერზე მისი შესრულებისას, რაც რესურსების დაკარგვაა.
გამოსავალი? ჩართეთ OPCache და შეინახეთ თქვენი PHP კოდი!
编辑 php.ini დოკუმენტი:
sudo nano /etc/php/*/fpm/php.ini
დაამატეთ ან შეცვალეთ შემდეგი:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
შენახვის შემდეგ გადატვირთეთ PHP პროცესი:
sudo systemctl restart php8.3-fpm
✅ეფექტი : ამცირებს PHP კოდის განმეორებით დამუშავებას, ამცირებს CPU-ს დატვირთვას და აუმჯობესებს შესრულების ეფექტურობას.
3. შეზღუდეთ PHP სკრიპტების მაქსიმალური შესრულების დრო
თუ PHP სკრიპტი ძალიან დიდხანს მუშაობს, CPU რესურსები მუდმივად იქნება დაკავებული.
დროის გონივრული პერიოდის დაწესებამ შეიძლება თავიდან აიცილოს "ჯიუტი" პროცესები სერვერის დიდი ხნის განმავლობაში დაკავებისგან.
打開 php.ini დოკუმენტი:
sudo nano /etc/php/*/fpm/php.ini
შეცვალეთ შემდეგი პარამეტრები:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
შემდეგ გადატვირთეთ PHP პროცესი:
sudo systemctl restart php-fpm
✅ეფექტი : ხელს უშლის PHP პროცესების ხანგრძლივი პერიოდის განმავლობაში მუშაობას, რაც ამცირებს CPU რესურსების ხარჯვას.
4. შეამოწმეთ MySQL ნელი შეკითხვა
PHP-FPM-ს აქვს მაღალი დატვირთვა,ეს შეიძლება გამოწვეული იყოს ნელი SQL შეკითხვით!
Ჩართვა MySQL ნელი შეკითხვის ჟურნალი, გაარკვიეთ SQL განცხადებები, რომლებიც ხელს უშლის.
შეცვალეთ MySQL კონფიგურაციის ფაილი:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
შენახვის შემდეგ გადატვირთეთ MySQL:
sudo systemctl restart mysql
შემდეგ გამოიყენეთ mysqldumpslow ნელი მოთხოვნების ანალიზი:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅შედეგი : დროის მომთხოვნი SQL მოთხოვნების იდენტიფიცირება, მონაცემთა ბაზის მუშაობის ოპტიმიზაცია და PHP-ზე დატვირთვის ირიბად შემცირება.
5. შეზღუდვები Memcached რესურსების გამოყენება
პროცესების სიას რომ ვუყურებ, აღმოვაჩინე Memcached პროცესის CPU-ის გამოყენება არის 24.8%!
შესაძლოა, ქეშის განაწილება ძალიან დიდია, რის გამოც CPU ამუშავებს დიდი რაოდენობით მონაცემებს.
调整 memcached კონფიგურაცია:
sudo nano /etc/memcached.conf
გადახედვა:
-m 32 # 限制 Memcached 内存使用 32MB
შემდეგ გადატვირთეთ:
sudo systemctl restart memcached
✅ეფექტი : ამცირებს CPU-ს დატვირთვას Memcached პროცესზე და აუმჯობესებს ქეშირების ეფექტურობას.
6. ჩართეთ Nginx სტატიკური რესურსების ქეშირებისთვის
ბევრჯერ, PHP ამუშავებს მოთხოვნებს, რომლებიც შეიცავს დიდი რაოდენობით CSS, JS, სურათები, მაგრამ ამ ფაილებს საერთოდ არ სჭირდებათ PHP ანალიზი!
გამოსავალი? გამოიყენეთ Nginx სტატიკური რესურსების შესანახად!
Nginx-ის კონფიგურაციის რედაქტირება:
sudo nano /etc/nginx/nginx.conf
添加:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
შენახვის შემდეგ გადატვირთეთ Nginx:
sudo systemctl restart nginx
✅შედეგი : ამცირებს PHP-ის მიერ სტატიკური ფაილების დამუშავების რაოდენობას, რითაც მცირდება CPU-ს დატვირთვა.
7. იპოვეთ PHP სკრიპტი, რომელიც იყენებს ყველაზე მეტ CPU-ს
თუ CPU ჯერ კიდევ ძალიან მაღალია ოპტიმიზაციის შემდეგ, შესაძლოა, ზოგიერთი PHP სკრიპტი გაშლილად მუშაობს.
გამოიყენეთ შემდეგი ბრძანება, რათა გაარკვიოთ PHP პროცესი ყველაზე მაღალი CPU გამოყენებით:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
თუ აღმოაჩენთ, რომ PHP სკრიპტი ძალიან ბევრ CPU-ს იკავებს, შეგიძლიათ პირდაპირ მოკლათ იგი:
kill -9 PID
✅შედეგი : ზუსტად ამოიცნობს „ცუდ ვაშლებს“ და ხელს უშლის PHP პროცესებს პროცესორის დიდი ხნის განმავლობაში დაკავებაში.
რეზიუმე: PHP-FPM ოპტიმიზაციის 7 გზა
✅ შეზღუდეთ PHP-FPM პროცესების რაოდენობაCPU გადატვირთვის თავიდან ასაცილებლად
✅ OPCache-ის ჩართვა, შეამცირეთ PHP კოდის განმეორებითი ანალიზი
✅ PHP დროის ამოწურვის დაყენებაგრძელვადიანი ოპერაციის თავიდან ასაცილებლად
✅ MySQL ნელი მოთხოვნების შემოწმება, მონაცემთა ბაზის შეკითხვის შესრულების ოპტიმიზაცია
✅ Memcached მეხსიერების მორგებაCPU დატვირთვის შემცირება
✅ ჩართეთ Nginx სტატიკური ქეში, ამცირებს PHP ანალიზის ტვირთს
✅ იპოვეთ CPU მაღალი მოხმარების PHP სკრიპტებიზუსტი ოპტიმიზაცია
საბოლოოდ
სერვერის ოპტიმიზაცია ფიტნესს ჰგავს, თქვენ უნდა გააკეთოთ ზუსტი კორექტირება და არ იდარდოთ!
მთელი რიგი ოპტიმიზაციის შემდეგ, ჩემი სერვერის CPU დატვირთვა დაეცა 80%-დან 15%-მდე, საიტი ორჯერ უფრო სწრაფად იხსნება!
თუ თქვენს სერვერს აქვს მსგავსი პრობლემები, სცადეთ ეს მეთოდები! 💪
👉მიიღეთ ზომები ახლავე! ოპტიმიზაცია გაუკეთეთ თქვენს PHP-FPM-ს და შეინახეთ თქვენი სერვერი! 🚀
იმედია, ჩენ ვეილიანგის ბლოგზე ( https://www.chenweiliang.com/ ) გამოგადგებათ სტატია „HestiaCP php-fpm პროცესი ბევრ პროცესორულ რესურსს მოიხმარს, როგორ ოპტიმიზაცია გავუკეთოთ მას?“ .
თავისუფლად გაგვიზიარეთ ამ სტატიის ბმული: https://www.chenweiliang.com/cwl-32490.html
