rx halkası, max_backlog ve max_syn_backlog boyutu nasıl kontrol edilir


41

Sorun giderme ve sorunları çözme sürecinde sık sık kendimi aşağıdaki Linux çekirdeği ayarları hakkında düşünürken buluyorum:

net.core.netdev_max_backlog
net.ipv4.tcp_max_syn_backlog
net.core.somaxconn

Dışında fs.file-max, net.ipv4.ip_local_port_range, net.core.rmem_max, net.core.wmem_max, net.ipv4.tcp_rmem, ve net.ipv4.tcp_wmem, onlar eşzamanlılık yüksek seviyede bir kutu akort zaman uğraşmak önemli düğmeleri gibi görünüyor.

Sorum: Bu sıraların her birinde kaç tane öğe olduğunu nasıl kontrol edebilirim? Genellikle insanlar sadece onları çok yükseğe çıkarırlar, ancak gelecekteki başarısızlığı tahmin etmek ve kullanıcı tarafından farkedilir şekilde tezahür etmeden önce sorunları yakalamak için bu sıra boyutlarını kaydetmek istiyorum.


Bu harika bir soru. Incast problemi ve yüksek çözünürlüklü TCP iletimleriyle ilgileniyorum.
dhchdhd

Yanıtlar:


29

Ben de bunu merak ettim ve sorunuzdan dolayı motive oldum!

Her biriyle ilgili bazı bilgilerle listelediğiniz her bir kuyruğa ne kadar yaklaşabileceğimi topladım. Yorumları / geri bildirimleri memnuniyetle karşılıyorum, izlemede yapılacak herhangi bir gelişme, işlerin yönetilmesini kolaylaştırıyor!

net.core.somaxconn

net.ipv4.tcp_max_syn_backlog

net.core.netdev_max_backlog

$ netstat -an | grep -c SYN_RECV 

Kuyruktaki mevcut bağlantı sayısını gösterecek, bir izleme uygulamasından yoklamak istiyorsanız bunu port başına kırabilir ve bunu snmpd.conf içindeki exec ifadelerine koyabilirsiniz.

Gönderen:

netstat -s

Bunlar, sıradan gelen istekleri ne sıklıkta gördüğünüzü gösterir:

146533724 packets directly received from backlog
TCPBacklogDrop: 1029
3805 packets collapsed in receive queue due to low socket buffer

fs.file-max

Gönderen:

http://linux.die.net/man/5/proc

$ cat /proc/sys/fs/file-nr
2720    0       197774

Bu (salt okunur) dosya, halihazırda açılan dosya sayısını verir. Üç sayı içerir: Ayrılmış dosya tanıtıcılarının sayısı, boş dosya tanıtıcılarının sayısı ve maksimum dosya tanıtıcılarının sayısı.

net.ipv4.ip_local_port_range

Bir dışlama hizmetleri listesi (netstat -an | grep LISTEN) oluşturabilirseniz, geçici etkinlik için kaç bağlantının kullanıldığını tespit edebilirsiniz:

netstat -an | egrep -v "MYIP.(PORTS|IN|LISTEN)"  | wc -l

Ayrıca (SNMP'den) aşağıdakileri de izlemelidir:

TCP-MIB::tcpCurrEstab.0

Bu ağaçta görülen tüm devletler hakkında istatistik toplamak da ilginç olabilir (yerleşmiş / time_wait / fin_wait / etc):

TCP-MIB::tcpConnState.*

net.core.rmem_max

net.core.wmem_max

Setsockopt istekleri için sisteminizi silmeniz / takip etmeniz gerekir. Aksine bu isteklerin istatistiklerinin izlendiğini sanmıyorum. Bu benim anlayışımdan farklı bir değer değil. Dağıtmış olduğunuz uygulama muhtemelen standart bir miktar isteyecektir. Başvurunuzu strace ile 'profilleyebilir' ve bu değeri buna göre yapılandırabilirim. (Tartışmak?)

net.ipv4.tcp_rmem

net.ipv4.tcp_wmem

Sınıra ne kadar yakın olduğunuzu takip etmek için tx_queue ve rx_queue alanlarındaki ortalama ve maks değerlerine bakmak gerekir (düzenli olarak):

# cat /proc/net/tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                                                     
   0: 00000000:0FB1 00000000:0000 0A 00000000:00000000 00:00000000 00000000   500        0 262030037 1 ffff810759630d80 3000 0 0 2 -1                
   1: 00000000:A133 00000000:0000 0A 00000000:00000000 00:00000000 00000000   500        0 262029925 1 ffff81076d1958c0 3000 0 0 2 -1                

Bununla ilgili hataları izlemek için:

# netstat -s
    40 packets pruned from receive queue because of socket buffer overrun

Ayrıca, küresel 'tampon' havuzunu (SNMP üzerinden) izliyor olmalı:

HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: Memory Buffers
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 74172456
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 51629704

2

Bu verileri SystemTap ile alabileceğinizi düşünüyorum. İşte Redhat referans el kitabı (pdf) . Ayrıca yeni başlayanlar için bir rehber var (pdf) .

Araç, bu verileri almanıza izin verecek kadar çok yönlü görünüyor, özellikle probe::netdev.rxgelen girişler hakkında size bilgi verecek bir şeye benziyor, şimdi yalnızca "yalnızca" arabellekte kuyruğun net boyutunu bulmanız ya da önemli olan bir şey bulmanız gerekiyor kuyruktan ayrılmak ...

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.