Daha net.core.somaxconn
yüksek değerlere ayarlamak yalnızca yeni bağlantı hızının o kadar yüksek / düşük olduğu yüksek yüklü sunucularda gereklidir, ancak BSD’lerde 128 (% 50 daha fazla: 128 backlog
+ 64 half-open
) henüz kabul edilmemiş bağlantıların normal olarak kabul edildiğini gösterir. Veya "normal" tanımını bir uygulamanın kendisine devretmeniz gerektiğinde.
Bazı yöneticiler net.core.somaxconn
, hizmetleriyle ilgili sorunları gizlemek için yüksek kullanırlar ; bu nedenle, kullanıcının bakış açısına göre, bağlantı kesintisi / zaman aşımı ( net.ipv4.tcp_abort_on_overflow
Linux tarafından kontrol edilir ) yerine gecikme artışı gibi görünecektir .
listen(2)
Kullanım kılavuzu - net.core.somaxconn
daha küçük bir şey seçmekte özgür olan bir uygulama için yalnızca üst sınır görevi görür (genellikle uygulamanın config dosyasında ayarlanır). Bazı uygulamalar sadece kullanmasına rağmen listen(fd, -1)
, bu, sistem tarafından izin verilen maksimum değere göre birikim ayarlamak anlamına gelir.
Asıl sebep düşük işlem hızı (örneğin tek bir dişli bloklama sunucusu) veya yetersiz sayıda çalışan iş parçacığı / işlemi (örneğin / gibi apache
/ çoklu işlem / dişli engelleme yazılımı tomcat
)
PS. Bazen hızlı başarısız ve yük dengeleyici yapmak kullanıcı bekleyin daha 's işi (yeniden deneme) yapmak almasını sağlamak tercih edilen - belirlediğimiz bu amaçla net.core.somaxconn
herhangi bir değer ve sınır uygulaması birikim ör etmek 10
ve seti net.ipv4.tcp_abort_on_overflow
1'e.
PPS. Linux çekirdeğinin eski sürümleri, somaxcon
değerinin 16 alt bitine (yani uint16_t
, değeri atma ) düşüren kötü bir hataya sahiptir , bu nedenle bu değeri 65535
tehlikeli olabileceğinden daha yükseğe çıkarmak . Daha fazla bilgi için bakınız: http://patchwork.ozlabs.org/patch/255460/
Linux'taki tüm backlog internals hakkında daha fazla ayrıntıya girmek istiyorsanız, okumaktan çekinmeyin:
TCP backlog Linux'ta nasıl çalışır ?