Net.core.somaxconn'un artması fark yaratır mı?


27

Net.core.somaxconn parametresiyle ilgili bir tartışmaya girdim: Varsayılan 128'i değiştirirsek, bunun bir fark yaratmayacağı söylendi.

Bunun yeterli kanıt olabileceğine inanıyordum:

"Backlog argümanı / proc / sys / net / core / somaxconn içindeki değerden büyükse, o zaman sessizce bu değere kesilir" http://linux.die.net/man/2/listen

ama değil.

Bunu Gbit ağında oturan iki makineyle tanıklamanın bir yöntemini bilen var mı? En iyisi MySQL, LVS, apache2 (2.2) 'ye karşı memcached olacaktır.

Yanıtlar:


43

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 ?


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.