Nginx Zero Downtime Reload. Nginx, yüksek performansAMP ve düşük kaynak kullanımı ile tanınır. Ancak en kritik konulardan biri, Nginx yapılandırmasını değiştirdiğinizde sunucunun yeniden başlatılması (reload) gerektiği durumlarda meydana gelebilecek trafik kesintileridir. Bu, özellikle yüksek trafiğe sahip web siteleri için büyük bir sorun olabilir. Fakat doğru yöntemlerle Nginx’i yeniden başlattığınızda sıfır kesinti (zero downtime) ile bu işlemi gerçekleştirebilirsiniz.
Bu bilgi, Nginx’in Pro veya ticari destek paketleriyle sunduğu bir tür bilgi gibi görünse de aslında herkesin erişebileceği, ancak çok az kişinin detaylarını bildiği bir tekniktir.
nginx -s reload
komutunu kullanırsınız. Bu komut, konfigürasyonu yeniden yükler ve çalışan worker’ları (işlemcileri) durdurur. Bu sırada yeni bağlantılar kabul edilmeye başlar ancak mevcut uzun süreli bağlantılar kesilebilir.Komutlar:
# Konfigürasyonu doğrulayın:
sudo nginx -t
# Zero-downtime reload için:
sudo kill -HUP $(cat /var/run/nginx.pid)
Bu komut, çalışan Nginx süreçlerini sonlandırmadan konfigürasyonu yeniden yükleyecek ve yeni worker’lar üzerinden bağlantı kabul etmeye başlayacaktır.
sudo kill -USR2 $(cat /var/run/nginx.pid)
Bu komut ile yeni Nginx master süreci çalıştırılmadan, mevcut master süreci devreye sokulmuş olur ve sorunlar çözülene kadar önceki yapılandırma çalışmaya devam eder.
Bu yapılandırma yeniden yükleme işlemi sırasında kullanılan sinyaller, master sürecini belirli komutlarla kontrol etmenizi sağlar. Nginx’in kullanabileceği birkaç sinyal komutu şunlardır:
QUIT
: Nginx’i güvenli şekilde kapatır (graceful shutdown).TERM
veya INT
: Nginx’i hızlı şekilde kapatır.HUP
: Yeni yapılandırmayı yeniden yükler ve zero-downtime reload yapar.USR1
: Nginx log dosyalarını döndürür (log rotation).USR2
: Yeni bir master süreci başlatır (örneğin, eski bir versiyonu çalıştırmak isterseniz).Bu detaylar, büyük projelerde sürekli olarak Nginx yapılandırmasını optimize eden ve trafiği asla kesintiye uğratmamak isteyen kullanıcılar için oldukça işlevseldir.
Bu teknikler özellikle aşağıdaki senaryolarda son derece önemlidir:
Nginx’in ücretli sürümü olan Nginx Plus, bu tarz özelliklerin bazılarını daha kullanışlı hale getirebilir. Ancak Nginx ile Zero-Downtime Reload ve sinyal bazlı yönetim gibi özellikler, Nginx’in açık kaynak versiyonunda mevcuttur ve bu, yüksek trafiğe sahip projelerde Nginx Plus’a gerek kalmadan büyük avantaj sağlayabilir.