SORU
4 Ocak 2009, Pazar


Tcp sayısı artan/ıp bağlantı, linux

Bir server programlıyorum ve bağlantıları numaram bant genişliği için bağlantı sayısını ayarladım bile doymuş olmadığından, sınırlı gibi görünüyor "". sınırsız

Ne kadar artış ya da Ubuntu Linux kutum bir anda açık bağlantı sayısını ortadan kaldırabilir miyim? İşletim sistemi bu sınırı mı, yoksa yönlendirici veya ISS? Yoksa başka bir şey mi?

CEVAP
13 EKİM 2010, ÇARŞAMBA


En fazla bağlantı sayısı biraz farklı olsa da her iki istemci ve sunucu tarafında belirli sınırlar tarafından çarptı.

İstemci tarafında: Ephermal port aralığını artırmak, ve tcp_fin_timeout düşüş

Varsayılan değerler: bir çözüm bulmak için

sysctl net.ipv4.ip_local_port_range
sysctl net.ipv4.tcp_fin_timeout

Ephermal port aralığı ana I. P. adresi belirli oluşturabilirsiniz giden yuva sayısı tanımlar. fin_timeout Bu yuva TIME_WAIT devlet kalacak minimum zaman () bir kere kullanıldıktan sonra kullanılmaz hale tanımlar. Sistem varsayılan değerler her zamanki gibi

  • net.ıpv4.ip_local_port_range = 32768 61000
  • net.ıpv4.= 60 tcp_fin_timeout

Bu temelde sistem daha (61000 - 32768) / 60 = 470 yuva daha herhangi bir zamanda garanti anlamına gelir. Eğer o mutlu değilse, port_range artan ile başlayabilir. 15000 61000 ayarlama aralığı ortak bugünlerde oldukça. Daha fazla fin_timeout azaltarak durumu artırabilir. Her ikisi de, 1500'den fazla giden bağlantılar görmelisiniz, daha kolay yapmak varsayalım.

Ekledi benim bu Düzenle:

*Yukarıdaki giden bağlantılar / ikinci yapmak için etkileyen etkenler sistem özelliği olarak yorumlanmamalıdır. Daha ziyade bu faktörler sistem activity.* büyük süre sürdürülebilir bir şekilde eş zamanlı bağlantı işlemek için yeteneğini etkiler

Varsayılan Br tcp_tw_recycle & tcp_tw_reuse tipik bir linux kutusu olur değerler

net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0

Bu bekleme durumu sonra bir bağlantıya izin verin ve onları time_wait tam döngüsü son zorlamayın. Onlara önerdiğimiz:

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1 

Bu hızlı tıme_waıt devlet içinde yuva bisiklet ve tekrar kullanarak onları sağlar. Ama bu değişikliği yapmadan önce bu yuva gerekiyor bu uygulama için kullanacağınız protokolleri ile çatışma değil emin olun.

Sunucu Tarafında: net.core.somaxconn değeri önemli bir role sahiptir. İstekleri bir yuva dinlemek için sıraya sayısını sınırlar. Eğer sunucu uygulama kapasitesini eminseniz, bir şey için varsayılan 128 km 1024 128 gibi yumru. Şimdi uygulamanızda değişken birikim dinle, eşit veya daha yüksek bir sayıya karar değiştirerek bu artış yararlanabilirsiniz.

Ethernet kartlarının 18* *parametre de bir rolü var. Varsayılan değer 5000 yaparız o kadar, hatta daha fazla olursa sistem işleyebilir 1000.

Benzer şekilde net.core.netdev_max_backlog net.ipv4.tcp_max_syn_backlog değerleri çarpmak. Varsayılan değerlerine 1000 ve 1024 sırasıyla.

Şimdi FD ulimts, kabuk artırarak istemci ve sunucu taraflı uygulamaları başlatmak için hatırlıyorum.

Bir daha popüler yukarıdaki teknik programcılar tarafından kullanılan yanı sıra sayısını azaltmak içintcp yazınçağırır. Benim kendi tercihi istemci göndermek istediğim veri basarım tampon neyin kullanmaktır, ve daha sonra uygun bir noktada ben gerçek yuvasına tamponlanmış verileri yazmak. Bu teknik bana büyük veri paketlerini kullanmak, parçalanma azaltmak, çekirdek düzeyinde kullanım alanı hem de benim CPU kullanımı azaltır sağlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BradleyWuzHere

    BradleyWuzHe

    25 NİSAN 2011
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008
  • TomKNJ

    TomKNJ

    26 ŞUBAT 2007