Yanıtlar:
Yavaş müşteri davranışına ve yapılandırmanızın nasıl işleyeceğine odaklanacağım, ancak bunun tek yararı olduğuna inanmaktan kaçınmayın. Yavaş istemcilere fayda sağlayan aynı yöntem aynı zamanda hızlı istemciler, SSL yönetimi, trafik dalgalanmaları ile uğraşmak ve İnternette HTTP sunmanın diğer yönleri için de faydalara sahiptir.
Gunicorn ön çatal yazılımdır. Uygulama sunucusuna yük dengeleyici veya servisler arasındaki haberleşme gibi düşük gecikmeli haberleşmeler için çatal öncesi sistemler çok başarılı olabilir. Talebi yerine getirmek için bir süreci hızlandırmanın hiçbir maliyeti yoktur ve tek bir işlemi tek bir talebi yerine getirmek için tahsis edebilirsiniz; Bunların ortadan kaldırılması, eşzamanlı bağlantıların sayısıyla başa çıkmak için mevcut işlemlerin sayısını geçinceye kadar daha hızlı, daha verimli bir sisteme yol açabilir.
Sizin durumunuzda, internet üzerinden yüksek gecikme süresi olan müşterilerle uğraşıyorsunuz. Bu yavaş istemciler aynı süreçleri birbirine bağlayabilir. QPS önemli olduğunda, uygulama kodunun isteği en kısa sürede alması, işlemesi ve çözmesi gerekir; böylece başka bir talebe geçebilir. Yavaş istemciler doğrudan sisteminizle iletişim kurduğunda, bu süreci bağlar ve yavaşlatır. Talebin mümkün olan en kısa sürede ele alınması ve elden çıkarılması yerine, bu işlemin yavaş müşteri için de beklemesi gerekiyor. Etkili QPS düşüyor.
Çok az işlemci ve bellek maliyeti ile çok sayıda bağlantıyı yönetmek, Nginx gibi senkronize olmayan sunucuların iyi olduğu şeydir. Yavaş müşterilerden aynı olumsuz şekilde etkilenmezler çünkü çok sayıda müşteriyi aynı anda ele alma konusunda ustalar. Nginx'in durumunda, modern bir donanımda çalışmak bir kerede on binlerce bağlantıyı idare edebiliyor.
Önceden çatallanmış bir sunucunun önündeki Nginx harika bir kombinasyon. Nginx müşterileri ile iletişimi yönetir ve yavaş müşterileri ele alma konusunda herhangi bir ceza almaz. Arka uca istekleri arka ucun bu talepleri yerine getirebildiği kadar hızlı bir şekilde gönderir ve arka ucun sunucu kaynaklarıyla mümkün olduğu kadar verimli olmasını sağlar. Arka uç, sonucu hesaplar hesaplamaz sonuç verir ve Nginx yavaş istemcileri kendi hızlarında beslemeye yanıt veren arabellekleri. Bu arada, arka müşteri yavaş müşteri hala sonuç alıyor olsa bile, başka bir talebi yerine getirmeye devam edebilir.
@blueben haklı. Ters proxy kullanılmadığında neler olabileceğine dair genel ve yaygın bir örnek, arka uç veritabanının proxy olmayan ve trafik sıkışıklığı olan veritabanı bağlantı tutamaçlarını çalıştırabileceğidir. Bunun nedeni, bağlantıların açıklandığı şekilde @blueben gibi serbest bırakılmasından kaynaklanıyor.
Veritabanı işleyicileri tükeniyor görmek için ilk içgüdüsü daha fazla veritabanı bağlantılarını desteklemek olabilir. Ancak, uygulamanın önüne ters bir proxy ekleyerek, hem yüksek yükler için gerekli veritabanı bağlantılarının sayısını önemli ölçüde düşürüp dengede tutarsınız; veritabanı bağlantı seviyesi bir trafik artışı olduğunda neredeyse artmayacaktır.
Nginx ayrıca, uygulama sunucunuzun bir uygulama sunucusu olmaya odaklanmasına izin vererek statik içerik, önbellekleme ve diğer HTTP görevlerinin çeşitliliği konusunda da mükemmeldir.