2011-01-27 29 views
10

'daki bekleyen bekleyen bağlantıların sırasını bilin. Tipik bir C ağ sunucusu uygulamasında, bekleyen bekleyen sıranın boyutu listen ile ayarlanabilir. Yeni bir bağlantı geliri olduğunda ve kuyrukta daha fazla yer kalmadığında, ECONNREFUSED müşteriye gönderilir veya istek göz ardı edilir.GNU/Linux

Bu kuyruğun durumunu bilmek mümkün mü? Bu, yüksek yük olay tabanlı bir sistemde, istemciden bazı yeniden denemeler tespit ettiğimizden ve bu sıranın dolduğundan ve bağlantı denemelerinin göz ardı edildiğinden şüphelendiğimiz için önemlidir.

Şimdiden teşekkürler. linux

+0

istemci ECONNREFUSED hatayı alıyor mu = net.inet.ip.maxqueue:

bu ben şimdi hızlı bir sysctl -a ortaya koymaktadır oturuyorum OpenBSD'deki alakalı sysctl .. vardır? Eğer öyleyse, cevabınızı aldınız. AFAIK, bekleyen sıranın boyutunu bilmenin bir yolu yoktur. – Simone

+0

Tam olarak değil. El sıkışma doğru şekilde bitmedi ve sunucu, SYNACK'ı göndererek son el sıkışmalarının kaybolduğu gibi yeniden denemeye başladı. Bu davranışı, bekleyen beklemedeki kuyruğun dinlemeyle ayarlanan sınırdan çıkmasıyla yeniden ürettik, bu nedenle bu sıra şüpheli. –

+0

Her gelen bağlantıyı kabul ettiğinizden emin misiniz? – Simone

cevap

8

: /proc/sys/net/ipv4/tcp_max_syn_backlog:

istemci bağlantı bir onay almadı hala hatırlanan bağlantı istekleri, maksimal sayısı.

Varsayılan değer, 128Mb'den fazla belleğe sahip sistemler için 1024 ve düşük bellek makineleri için 128'dir. Sunucu aşırı yük altındaysa, bu sayıyı artırmaya çalışın.

/proc/sys/net/core/somaxconn: SOMAXCONN olarak kullanıcı alanında bilinen yuva dinle() bekleme listesi sınırı. Varsayılan değer 128'dir. Ayrıca, TCP soketleri için ek ayarlamalar için tcp_max_syn_backlog dosyasına bakın. 300