Makale Rehberi
İşyerinde aniden Nginx'in CPU kullanımının hızla arttığını mı keşfettiniz? Daha da kötüsü, Nginx'in çoklu çalışan süreçleri, süreçlere her baktığımda kaynakları deli gibi tüketiyor.
Bu sahneyi görünce başınız ısınıyor ve bağırmadan edemiyorsunuz: "Aman Tanrım, sunucu patlayacak mı?" Merak etmeyin, bu sunucunuzun "biteceği" anlamına gelmiyor. ancak Nginx'te kapsamlı bir optimizasyon yapmanıza ihtiyacımız var!
Aşırı Nginx yükünün nedenlerinin analizi

Öncelikle, Nginx'in neden aniden "güçsüzleştiğini" anlamamız gerekiyor . Bu sorunun birçok nedeni var, bu yüzden endişelenmeyin, bunları birlikte inceleyelim.
1. Mantıksız yapılandırma
Nginx konfigürasyon dosyasında en önemli nokta worker_processes. Bu parametre Nginx tarafından başlatılan işlem sayısını belirler.
- Çok az çalışan süreç yapılandırırsanız CPU yükü artar; çok fazla yapılandırırsanız bellek yetersiz kalır.
- Bir denge noktası bulmalısınız, örneğin:Worker_processes'i CPU çekirdeği sayısının 1 ila 2 katı olarak ayarlayın.
- 4 çekirdeğiniz varsa deneyin
worker_processes 4Veya doğrudan şuna ayarlayın:auto.
2. Ziyaretlerde artış
Bazen, Nginx yükündeki ani artış operasyonel hatalardan değil, aşırı istek hacminden kaynaklanır. Yüksek eşzamanlılık, Nginx'in çalışan süreçlerini aşırı yükleyebilir ve her sürecin kapasitesinin ötesinde çalışmasına, CPU ve bellek tüketmesine neden olabilir. Bu durumda, CPU çekirdek sayısını artırmak veya daha fazla bellek eklemek gibi sunucu kaynaklarını yükseltmeniz gerekebilir. Elbette, bu aynı zamanda bir hatırlatma niteliğindedir: CDN trafik dağıtımını veya yük dengelemesini de göz önünde bulundurmayı unutmayın.
3. Kötü niyetli saldırılarla karşılaşıldı
İnternette inanılmaz derecede popüler olmak her zaman iyi bir şey değildir; kötü niyetli saldırılar her an sizi hedef alabilir. Anormal derecede yüksek CPU kullanımı ve şüpheli IP adreslerinin talep edildiğini fark ederseniz, web siteniz büyük olasılıkla DDoS saldırısı altındadır. Bu durumda, hemen bir güvenlik duvarı kurmanız veya erişim sıklığını sınırlamanız gerekir ; örneğin Nginx'in yerleşik hız sınırlama modülünü kullanabilir veya bir IP kara listesi oluşturabilirsiniz.
Nginx işleminin yüksek bellek kullanımı sorunu nasıl çözülür?
Öyleyse soru şu: Nginx çalışan süreci neden bu kadar çok kaynak kullanıyor? Yapılandırmayla başlamalı ve adım adım optimize etmeliyiz.
Yapılandırma yöntemi
Nginx yapılandırma dosyasını açın: Genellikle Nginx'in ana yapılandırma dosyası şu adreste bulunur:
/etc/nginx/nginx.conf.Kurmak
worker_processes: Yapılandırma dosyasında bulundueventsbloklar, ayarlarworker_processesdeğer. değilseeventsblok, bir tane oluşturmanız gerekir.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. İşçi_bağlantılarını doğru şekilde ayarlayın
Nginx worker_connections Parametre, her bir alt işlemin işleyebileceği maksimum bağlantı sayısını belirler. Çok küçük olması eşzamanlılık performansını etkileyecektir; çok büyük olması ise çok fazla kaynak tüketebilir.
Uygun değer nasıl hesaplanır?
4 çekirdekli bir CPU'nuz ve 16 GB RAM'iniz olduğunu varsayarsak, güvenli bir başlangıç noktası worker_connections 4096.
Ancak web sitenizde çok fazla trafik varsa her işlemin yeterli sayıda isteği işleyebildiğinden emin olmak için bu değeri 8192'ye yükseltmeyi düşünün.
events {
worker_connections 8192;
}
Bu sayede Nginx'in işlem gücü büyük ölçüde artacaktır.
2. keepalive_timeout'u ayarlayın
Nginx'in istekleri işlemesi için bir diğer önemli parametre ise keepalive_timeout.
Bu ayar, istemcinin sunucuyla bağlantısının ne kadar süreyle sürdürülebileceğini belirler.
Süreyi çok uzun ayarlamak, bağlantı kaynaklarının aşırı tüketimine yol açabilir.
Deneyebilirsin keepalive_timeout Bağlantıyı sürdürmek ve kaynakları serbest bırakmak için 15 saniyeye ayarlayın.
keepalive_timeout 15;
3. Dosya tanımlayıcı sınırlarını optimize edin
Varsayılan olarak, Linux sistemleri her işlemin açabileceği dosya tanımlayıcı sayısını sınırlandırır.
Nginx'in çok sayıda dosyayı (statik kaynaklar gibi) işlemesi gerekiyorsa, Nginx'te "too many open files".
geçebilirsin worker_rlimit_nofile Dosya tanımlayıcı sınırını artırınörneğin 65535 olarak ayarlayın.
worker_rlimit_nofile 65535;
4. Önbelleğe almayı ve gzip'i etkinleştirin
Önbelleğe alma ve sıkıştırma, web sitesi performans optimizasyonunun iki anahtarıdır.
Nginx'in önbellekleme özelliğini etkinleştirerek, statik kaynaklar (resimler ve JS dosyaları gibi) bellekte önbelleğe alınabilir ve böylece sunucu yükü önemli ölçüde azaltılabilir.
Ayrıca gzip sıkıştırma fonksiyonunun açılması, iletilen veri miktarını azaltabilir ve web sitesi hızını artırabilir.
gzip on;
gzip_types text/plain application/javascript;
5. Nginx kaynak kullanımını analiz edin
Son olarak, yukarıdaki optimizasyonların tümünü tamamladıysanız ancak Nginx hala çok fazla CPU kullanıyorsa, derinlemesine analiz için bazı araçları kullanmanız gerekebilir.
使用 top 或 htop Bir sürecin gerçek zamanlı kaynak tüketimini görüntüleyin,geçmek strace Sistem çağrılarını izleyin veya kullanın nmon Performans raporları oluşturun. Yalnızca Nginx'in gerçek çalışmasını kapsamlı bir şekilde analiz ederek daha hassas ayarlamalar yapabiliriz.
sonuç olarak
Nginx'in CPU kullanımı arttığında paniğe kapılmayın. Bunun nedeni yalnızca yanlış yapılandırma veya aşırı trafik olabilir.
makul ayarlamalar yoluyla worker_processes 和 worker_connectionsÖnbelleğe almayı etkinleştirerek, zaman aşımlarını ve dosya tanımlayıcılarını optimize ederek Nginx üzerindeki yük baskısını önemli ölçüde azaltabilirsiniz.
Nginx, uygun şekilde optimize edildiğinde web siteniz için mükemmel performans sağlayabilen güçlü bir web sunucusudur.
Unutmayın, her sorun bilimsel olarak çözülebilir ve sunucu performansını optimize etmek de bunun bir istisnası değildir.
Nginx'in yüksek verimliliğini korumak için zamanında izleme ve ayarlamalar çok önemlidir. Bu tekniklere hakim olursanız, web siteniz yüksek trafik veya kötü amaçlı saldırılar altında bile güvende kalacaktır.
Umarım bu makale size ilham vermiştir, acele edin ve Nginx'inizi optimize edin!
Umarım Chen Weiliang'ın blogunda ( https://www.chenweiliang.com/ ) paylaşılan "Nginx sunucusunda yüksek CPU yükü ve yüksek işlem belleği kullanımıyla nasıl başa çıkılır?" başlıklı makale size yardımcı olur.
Bu makalenin bağlantısını paylaşmaktan çekinmeyin: https://www.chenweiliang.com/cwl-32093.html
