Makale Rehberi
HestiaCP sunucusunda CPU'da ani artışlar mı yaşıyorsunuz? PHP-FPM süreç optimizasyonu için eksiksiz bir rehber!

Sunucunuzun işlemci kullanımı sürekli %100'de mi? Fanlar çılgınca mı dönüyor? Web siteniz yavaş mı yükleniyor? 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, bu etkili optimizasyon kılavuzunu paylaşalım ! 🚀
1. php-fpm işlemlerinin sayısını sınırlayın
php-fpm'nin varsayılan ayarları sınırsız sayıda işlem oluşturarak sunucu işlemcisinin aşırı yüklenmesine neden olabilir.
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 PHP 8.3 kullandığını gösterir.
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 aşırı CPU kaynağı tüketmesini önlemek için işlem sayısını sınırlar.
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 tekrarlayan ayrıştırma işlemlerini azaltır, CPU yükünü düşürür ve yürütme verimliliğini artırır.
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 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_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ı engelleyerek CPU kaynak israfını azaltır.
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
✅Sonuç : Zaman alan SQL sorgularını belirleyin, veritabanı performansını optimize edin ve dolaylı olarak PHP yükünü azaltın.
5. Kısıtlamalar memcached Kaynak kullanımı
İş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şlemindeki CPU yükünü azaltır ve önbellekleme verimliliğini artırır.
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
✅Sonuç : PHP'nin statik dosyaları işleme sayısını azaltarak CPU kullanımını düşürür.
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
✅Sonuç : "Kötü amaçlı" işlemleri doğru bir şekilde belirler ve PHP işlemlerinin uzun süre CPU'yu meşgul etmesini önler.
Ö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! 🚀
Umarım Chen Weiliang'ın blogunda ( https://www.chenweiliang.com/ ) paylaşılan "HestiaCP php-fpm işlemi çok fazla CPU kaynağı tüketiyor, nasıl optimize edilir?" başlıklı makale size yardımcı olur.
Bu makalenin bağlantısını paylaşmaktan çekinmeyin: https://www.chenweiliang.com/cwl-32490.html
