Proses php-fpm HestiaCP menggunakan banyak sumber CPU Bagaimana saya boleh mengoptimumkannya?

HestiaCP Lonjakan CPU pelayan? Panduan lengkap untuk mengoptimumkan proses PHP-FPM!

Proses php-fpm HestiaCP menggunakan banyak sumber CPU Bagaimana saya boleh mengoptimumkannya?

Adakah CPU pelayan sentiasa pada 100%? Kipas berputar liar? Adakah kelajuan pembukaan laman web semakin perlahan?Penyebabnya mungkin php-fpm!

Saya baru-baru ini menemui chenweiliang.com Kolam PHP ini php-fpm Proses memakan CPU seperti gila, dan pelayan ranap!

Untuk menghidupkan semula pelayan, saya mencuba beberapa siri kaedah pengoptimuman dan akhirnya berjaya mengurangkan penggunaan CPU.

Sekarang, mari berkongsi ini Panduan Pengoptimuman Cekap! 🚀

1. Hadkan bilangan proses php-fpm

tetapan lalai php-fpm bolehtidak terhadProses ini dibuat secara tidak terkawal, menyebabkan CPU pelayan membebankan.

Untuk mengoptimumkannya, kami boleh mengubah suai parameter pengurusan proses.

打开 php-fpm Fail konfigurasi:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Tukar kepada versi PHP anda, seperti PHP8.3, dan tukar kepada ini:/etc/php/8.3/fpm/pool.d/www.conf

Tanya versi PHP yang ditetapkan oleh HestiaCP

v-list-web-domain user domain.com

Cth:

v-list-web-domain abc chenweiliang.com

Dalam output, anda akan melihat sesuatu seperti:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Ini bermakna laman web tersebut menggunakan PHP 8.3.

Cari dan ubah suai parameter berikut:

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

Kemudian but semula php-fpm Untuk menjadikannya berkesan:

sudo systemctl restart php-fpm

Kesan: Hadkan bilangan proses untuk mengelakkan php-fpm daripada menggunakan sumber CPU secara berlebihan.

2. Dayakan OPCache (untuk meningkatkan prestasi PHP)

PHP membetulkan semula kod setiap kali ia dilaksanakan, yang merupakan pembaziran sumber.
Penyelesaiannya? Dayakan OPCache dan cache kod PHP anda!

编辑 php.ini fail:

sudo nano /etc/php/*/fpm/php.ini

Tambah atau ubah suai yang berikut:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0  # 禁用实时检测,提高性能

Selepas menyimpan, mulakan semula proses PHP:

sudo systemctl restart php8.3-fpm

Kesan: Kurangkan penghuraian berulang kod PHP, kurangkan beban CPU, dan tingkatkan kecekapan pelaksanaan.

3. Hadkan masa pelaksanaan maksimum skrip PHP

Jika skrip PHP berjalan terlalu lama, sumber CPU akan diduduki secara berterusan.
Menetapkan tempoh tamat masa yang munasabah boleh menghalang proses "degil" daripada menduduki pelayan untuk masa yang lama.

打开 php.ini fail:

sudo nano /etc/php/*/fpm/php.ini

Ubah suai parameter berikut:

max_execution_time = 30  # PHP 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_limit = 256M  # 限制单个 PHP 进程的内存占用

Kemudian mulakan semula proses PHP:

sudo systemctl restart php-fpm

Kesan: Menghalang proses PHP daripada berjalan untuk masa yang lama dan mengurangkan pembaziran sumber CPU.

4. Semak MySQL Pertanyaan perlahan

PHP-FPM mempunyai beban yang tinggi,Ia mungkin disebabkan oleh pertanyaan SQL yang perlahan!
开启 MySQL Log pertanyaan perlahan, ketahui pernyataan SQL yang menahan.

Edit fail konfigurasi MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Tambahkan pada:

slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1  # 超过 1 秒的查询会被记录

Selepas menyimpan, mulakan semula MySQL:

sudo systemctl restart mysql

Kemudian gunakan mysqldumpslow Analisis pertanyaan perlahan:

mysqldumpslow -s c -t 10 /var/log/mysql-slow.log

Kesan: Ketahui pertanyaan SQL yang memakan masa, mengoptimumkan prestasi pangkalan data, dan secara tidak langsung mengurangkan beban PHP.

5. Hadkan penggunaan sumber Memcached

Melihat senarai proses, saya dapati Penggunaan CPU proses memcached ialah 24.8%!
Mungkin peruntukan cache terlalu besar, menyebabkan CPU memproses sejumlah besar data.

调整 memcached Konfigurasi:

sudo nano /etc/memcached.conf

Semak semula:

-m 32  # 限制 Memcached 内存使用 32MB

Kemudian but semula:

sudo systemctl restart memcached

Kesan: Kurangkan beban CPU proses Memcached dan tingkatkan kecekapan cache.

6. Dayakan Nginx untuk menyimpan sumber statik

Banyak kali, PHP memproses permintaan yang mengandungi sejumlah besar CSS, JS, imej, tetapi fail ini tidak memerlukan penghuraian PHP sama sekali!
Penyelesaiannya? Gunakan Nginx untuk menyimpan sumber statik!

Edit konfigurasi Nginx:

sudo nano /etc/nginx/nginx.conf

Tambahkan pada:

location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
    expires max;
    log_not_found off;
}

Selepas menyimpan, mulakan semula Nginx:

sudo systemctl restart nginx

Kesan: Kurangkan bilangan kali PHP memproses fail statik dan mengurangkan penggunaan CPU.

7. Cari skrip PHP yang menggunakan paling banyak CPU

Jika CPU masih terlalu tinggi selepas pengoptimuman, mungkin sesetengah skrip PHP sedang berjalan secara liar.
Gunakan arahan berikut untuk mengetahui proses PHP dengan penggunaan CPU tertinggi:

ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php

Jika anda mendapati bahawa skrip PHP menggunakan terlalu banyak CPU, anda boleh mematikannya secara langsung:

kill -9 PID

Kesan:Mengenal pasti "epal buruk" dengan tepat dan menghalang proses PHP daripada menduduki CPU untuk masa yang lama.

Ringkasan: 7 cara untuk mengoptimumkan PHP-FPM

Hadkan bilangan proses PHP-FPM, untuk mengelakkan lebihan CPU
Dayakan OPCache, kurangkan penghuraian berulang kod PHP
Menetapkan tamat masa PHP, untuk mengelakkan operasi jangka panjang
Menyemak pertanyaan lambat MySQL, mengoptimumkan prestasi pertanyaan pangkalan data
Laraskan Memori Memcached, mengurangkan beban CPU
Dayakan cache statik Nginx, mengurangkan beban penghuraian PHP
Cari skrip PHP penggunaan CPU yang tinggi, pengoptimuman yang tepat

Kesimpulannya

Pengoptimuman pelayan adalah seperti kecergasan, anda perlu membuat pelarasan yang tepat dan jangan main-main!
Selepas beberapa siri pengoptimuman, beban CPU pelayan saya telah menurun daripada 80% turun kepada 15%, tapak web dibuka dua kali lebih pantas!
Jika pelayan anda mempunyai masalah yang sama, cuba kaedah ini! 💪

???? Ambil tindakan sekarang! Optimumkan PHP-FPM anda dan simpan pelayan anda! 🚀

发表 评论

Alamat e-mel anda tidak akan diterbitkan. 必填 项 已 用 * 标注

Tatal ke