Daha net.core.somaxconnyü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_overflowLinux tarafından kontrol edilir ) yerine gecikme artışı gibi görünecektir .
listen(2)Kullanım kılavuzu - net.core.somaxconndaha 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.somaxconnherhangi bir değer ve sınır uygulaması birikim ör etmek 10ve seti net.ipv4.tcp_abort_on_overflow1'e.
PPS. Linux çekirdeğinin eski sürümleri, somaxcondeğerinin 16 alt bitine (yani uint16_t, değeri atma ) düşüren kötü bir hataya sahiptir , bu nedenle bu değeri 65535tehlikeli 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 ?