Nginx, işçi başına binlerce bağlantıyı zorlanmadan taşır. Siteniz yavaşsa, neredeyse her zaman arkasındaki PHP'yi ya da veritabanını bekliyordur. Bu sayıları yükseltmek kuyruğu taşır, kısaltmaz.
İki sayı
worker_processes auto; # one per CPU core - leave it
events {
worker_connections 1024; # per worker
multi_accept on;
}
auto çekirdek sayısına eşitlenir ve çok sıra dışı olanın berisindeki her makinede doğru yanıt budur. Toplam kapasite, işçilerle bağlantıların çarpımıdır ve tek bir siteye birkaç bağlantı açan bir tarayıcı birkaç kez sayılır.
Yükselt anlamına gelen hata
grep "worker_connections are not enough" /var/log/nginx/error.log
O satır, yalnızca o satır, sayıyı yükseltmek için bir gerekçedir. O olmadan, çarptığınız sınır bu değildir.
Genellikle asıl sınır nedir
- PHP-FPM çocukları - kuyruk orada, Nginx'te değil. Bakınız bir PHP-FPM havuzunu boyutlandırmak.
- Veritabanı bağlantıları - bakınız çok fazla bağlantı.
- Açık dosyalar - işçi, kendi sınırına varmadan çok önce sistem sınırına çarpar.
# the one worth raising, with the connections
worker_rlimit_nofile 65535;
Uygulamak için yeniden yükleyin, asla yeniden başlatmayın
sudo nginx -t && sudo systemctl reload nginx
Yeniden yükleme, yeni bağlantılar için yeni işçiler başlatır ve eskilerin işini bitirmesine izin verir. Yeniden başlatma ise yolda olanı düşürür; yoğun bir sitede bu, birinin gözüne görünen bir hatadır.