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
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.
Hızlı Linux çok sayıda dosya için Dosy...
Eğer bir bağlantı noktası bulmak için ...
Nasıl Linux bir süreç belirli bir bağl...
Modern bir Linux kutusu açık TCP bağla...
Doğru bağlantı std kullanmak için seçe...