HestiaCP php-fpm işlemi çok fazla CPU kaynağı tüketiyor. Bunu nasıl optimize edebilirim?

HestiaCP Sunucu CPU'sunda ani artış mı var? PHP-FPM sürecini optimize etmeye yönelik eksiksiz bir rehber!

HestiaCP php-fpm işlemi çok fazla CPU kaynağı tüketiyor. Bunu nasıl optimize edebilirim?

Sunucu CPU'su her zaman %100 mü? Vantilatör çılgınca mı dönüyor? Web sitenizin açılış hızı yavaşlıyor mu?Suçlu php-fpm olabilir!

Yakın zamanda keşfettim chenweiliang.com Bu PHP havuzu php-fpm İşlem CPU'yu çılgınca tüketti ve sunucu çöktü!

Sunucuyu canlandırmak için bir dizi optimizasyon yöntemi denedim ve sonunda CPU kullanımını azaltmayı başardım.

Şimdi bunu paylaşalım Verimli Optimizasyon Rehberi! 🚀

1. php-fpm işlemlerinin sayısını sınırlayın

php-fpm varsayılan ayarları olabilirsınırsızİşlem kontrolsüz bir şekilde oluşturuluyor ve sunucu CPU'sunun aşırı yüklenmesine neden oluyor.

Bunu optimize etmek için süreç yönetim parametrelerini değiştirebiliriz.

açık php-fpm Yapılandırma Dosyaları:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *PHP sürümünüzü (örneğin PHP8.3) değiştirin ve şununla değiştirin:/etc/php/8.3/fpm/pool.d/www.conf

HestiaCP tarafından ayarlanan PHP sürümünü sorgulayın

v-list-web-domain user domain.com

Örneğin:

v-list-web-domain abc chenweiliang.com

Çıktıda aşağıdakine benzer bir şey göreceksiniz:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Bu, web sitesinin kullandığı anlamına gelir PHP 8.3.

Aşağıdaki parametreleri bulun ve değiştirin:

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

Daha sonra yeniden başlatın php-fpm Etkili hale getirmek için:

sudo systemctl restart php-fpm

etki: php-fpm'nin CPU kaynaklarını aşırı tüketmesini önlemek için işlem sayısını sınırlayın.

2. OPCache'i etkinleştirin (PHP performansını artırmak için)

PHP, kodu her çalıştırıldığında yeniden ayrıştırır, bu da kaynak israfıdır.
Çözüm? OPCache'i etkinleştirin ve PHP kodunuzu önbelleğe alın!

编辑 php.ini belge:

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

Aşağıdakileri ekleyin veya değiştirin:

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

Kaydettikten sonra PHP işlemini yeniden başlatın:

sudo systemctl restart php8.3-fpm

etki: PHP kodunun tekrar tekrar ayrıştırılmasını azaltın, CPU yükünü azaltın ve yürütme verimliliğini artırın.

3. PHP betiklerinin maksimum yürütme süresini sınırlayın

Eğer bir PHP betiği çok uzun süre çalışırsa, CPU kaynakları sürekli meşgul olacaktır.
Makul bir zaman aşımı süresi belirlemek, "inatçı" işlemlerin sunucuyu uzun süre meşgul etmesini önleyebilir.

açık php.ini belge:

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

Aşağıdaki parametreleri değiştirin:

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

Daha sonra PHP işlemini yeniden başlatın:

sudo systemctl restart php-fpm

etki: PHP işlemlerinin uzun süre çalışmasını önleyin ve CPU kaynak israfını azaltın.

4. Kontrol MySQL Yavaş sorgu

PHP-FPM'nin yüksek bir yükü var,Yavaş SQL sorgusundan kaynaklanıyor olabilir!
açık MySQL Yavaş sorgu günlüğü, geri planda kalan SQL ifadelerini bulun.

MySQL yapılandırma dosyasını düzenleyin:

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

Cevap:

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

Kaydettikten sonra MySQL'i yeniden başlatın:

sudo systemctl restart mysql

Sonra kullan mysqldumpslow Yavaş sorguları analiz edin:

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

etki:Zaman alıcı SQL sorgularını bulun, veritabanı performansını optimize edin ve dolaylı olarak PHP yükünü azaltın.

5. Memcached kaynak kullanımını sınırlayın

İşlem listesine baktığımda şunu buldum: Memcached işleminin CPU kullanımı %24.8!
Önbellek tahsisi çok büyük olabilir ve bu da CPU'nun büyük miktarda veriyi işlemesine neden olabilir.

调整 memcached Yapılandırma:

sudo nano /etc/memcached.conf

Tekrar düzeltme yapmak:

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

Daha sonra yeniden başlatın:

sudo systemctl restart memcached

etki: Memcached işleminin CPU yükünü azaltın ve önbellek verimliliğini artırın.

6. Nginx'in statik kaynakları önbelleğe almasını etkinleştirin

PHP çoğu zaman çok sayıda istek içeren istekleri işler CSS, JS, görseller, ancak bu dosyaların PHP ayrıştırmasına ihtiyacı yoktur!
Çözüm? Statik kaynakları önbelleğe almak için Nginx kullanın!

Nginx yapılandırmasını düzenleyin:

sudo nano /etc/nginx/nginx.conf

Cevap:

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

Kaydettikten sonra Nginx'i yeniden başlatın:

sudo systemctl restart nginx

etki: PHP'nin statik dosyaları işleme sayısını azaltın ve CPU kullanımını düşürün.

7. En fazla CPU kullanan PHP betiğini bulun

Optimizasyondan sonra CPU hala çok yüksekse, bazı PHP betiklerinin kontrolsüz çalıştığı anlamına gelebilir.
En yüksek CPU kullanımına sahip PHP işlemini bulmak için aşağıdaki komutu kullanın:

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

Bir PHP betiğinin çok fazla CPU kullandığını düşünüyorsanız, onu doğrudan sonlandırabilirsiniz:

kill -9 PID

etki:"Çürük elmaları" doğru bir şekilde tespit edin ve PHP işleminin CPU'yu uzun süre meşgul etmesini önleyin.

Özet: PHP-FPM'yi optimize etmenin 7 yolu

PHP-FPM işlemlerinin sayısını sınırlayınCPU aşırı yüklenmesini önlemek için
OPCache'i etkinleştir, PHP kodunun tekrar tekrar ayrıştırılmasını azaltın
PHP zaman aşımını ayarlama, uzun vadeli operasyonu önlemek için
MySQL yavaş sorgularını kontrol etme, veritabanı sorgu performansını optimize edin
Memcached Belleği Ayarla, CPU yükünü azaltır
Nginx statik önbelleğini etkinleştirPHP ayrıştırma yükünü azaltarak
Yüksek CPU kullanımı olan PHP betiklerini bulun, hassas optimizasyon

sonuç olarak

Sunucu optimizasyonu fitness gibidir, hassas ayarlamalar yapmanız ve şakaya gelmemeniz gerekir!
Bir dizi optimizasyondan sonra sunucu CPU yüküm şu şekilde düştü: %80'den %15'e düştü, web sitesi iki kat daha hızlı açılıyor!
Eğer sunucunuzda benzer sorunlar varsa bu yöntemleri deneyin! 💪

👉 Hemen harekete geçin! PHP-FPM'inizi optimize edin ve sunucunuzu kurtarın! ????

发表 评论

E-posta adresiniz yayımlanmayacaktır. 必填 项 已 用 * 标注

Makale Rehberi
En gidin