कैसे rx रिंग, max_backlog और max_syn_backlog आकार की जाँच करें


41

अक्सर समस्या निवारण और ट्यूनिंग चीजों के दौरान मैं अपने आप को निम्नलिखित लिनक्स कर्नेल सेटिंग्स के बारे में सोच पाता हूं:

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

के अलावा fs.file-max, net.ipv4.ip_local_port_range, net.core.rmem_max, net.core.wmem_max, net.ipv4.tcp_rmem, और net.ipv4.tcp_wmem, वे जब आप संगामिति के उच्च स्तर के लिए एक बॉक्स में बदलाव कर रहे हैं के साथ गड़बड़ करने के लिए महत्वपूर्ण घुंडी हो रहा है।

मेरा प्रश्न: मैं यह देखने के लिए कैसे जांच कर सकता हूं कि उन प्रत्येक कतारों में कितनी वस्तुएं हैं? आमतौर पर लोग उन्हें केवल सुपर हाई सेट करते हैं, लेकिन मैं भविष्य की विफलता की भविष्यवाणी करने और उपयोगकर्ता द्वारा ध्यान देने योग्य तरीके से प्रकट होने से पहले मुद्दों को पकड़ने में मदद करने के लिए उन कतार आकारों को लॉग करना चाहूंगा।


यह एक भयानक सवाल है। मैं incast समस्या और उच्च-रिज़ॉल्यूशन टीसीपी रिट्रांसमिट्स में रुचि रखता हूं।
dhchdhd

जवाबों:


29

मैंने भी इस बात पर आश्चर्य किया है और आपके प्रश्न से प्रेरित था!

मैंने एकत्रित किया है कि आप प्रत्येक से संबंधित कुछ जानकारी के साथ आपके द्वारा सूचीबद्ध कतारों में से प्रत्येक के करीब आ सकते हैं। मैं टिप्पणियों / प्रतिक्रिया का स्वागत करता हूं, निगरानी में कोई भी सुधार चीजों को प्रबंधित करना आसान बनाता है!

net.core.somaxconn

net.ipv4.tcp_max_syn_backlog

net.core.netdev_max_backlog

$ netstat -an | grep -c SYN_RECV 

कतार में कनेक्शन की वर्तमान वैश्विक गणना दिखाएगा, आप इसे प्रति पोर्ट को तोड़ सकते हैं और इसे snmpd.conf में निष्पादित विवरणों में डाल सकते हैं यदि आप इसे मॉनिटरिंग एप्लिकेशन से सर्वेक्षण करना चाहते हैं।

से:

netstat -s

ये आपको दिखाएंगे कि आप कतार से कितनी बार अनुरोध देख रहे हैं:

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

fs.file-अधिकतम

से:

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

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

यह (केवल पढ़ने के लिए) फ़ाइल वर्तमान में खोली गई फ़ाइलों की संख्या देती है। इसमें तीन नंबर होते हैं: आवंटित फ़ाइल हैंडल की संख्या, मुफ्त फ़ाइल हैंडल की संख्या और फ़ाइल हैंडल की अधिकतम संख्या।

net.ipv4.ip_local_port_range

यदि आप सेवाओं की एक बहिष्करण सूची (netstat -an | grep LISTEN) का निर्माण कर सकते हैं तो आप यह अनुमान लगा सकते हैं कि पंचांग गतिविधि के लिए कितने कनेक्शन का उपयोग किया जा रहा है:

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

मॉनिटर (SNMP से) भी करना चाहिए:

TCP-MIB::tcpCurrEstab.0

इस पेड़ में देखे गए सभी राज्यों (स्थापित / time_wait / fin_wait / etc) के बारे में आँकड़े एकत्र करना भी दिलचस्प हो सकता है:

TCP-MIB::tcpConnState.*

net.core.rmem_max

net.core.wmem_max

आपको अपने सिस्टम को सेटोस्कॉप्ट अनुरोधों के लिए डीट्रेस / स्ट्रेस करना होगा। मुझे नहीं लगता कि इन अनुरोधों के लिए आँकड़े अन्यथा ट्रैक किए गए हैं। यह वास्तव में एक मूल्य नहीं है जो मेरी समझ से बदलता है। आपके द्वारा तैनात किया गया एप्लिकेशन संभवतः एक मानक राशि मांगेगा। मुझे लगता है कि आप अपने एप्लिकेशन को स्ट्रेस के साथ 'प्रोफाइल' कर सकते हैं और इस मान को तदनुसार कॉन्फ़िगर कर सकते हैं। (चर्चा करें?)

net.ipv4.tcp_rmem

net.ipv4.tcp_wmem

यह ट्रैक करने के लिए कि आप अपनी सीमा के कितने करीब हैं, आपको tx_queue और rx_queue फ़ील्ड से औसत और अधिकतम (नियमित आधार पर) देखना होगा:

# 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                

इससे संबंधित त्रुटियों को ट्रैक करने के लिए:

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

वैश्विक 'बफर' पूल (एसएनएमपी के माध्यम से) की निगरानी भी होनी चाहिए:

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

2

मुझे लगता है कि आप SystemTap के साथ उस डेटा को प्राप्त करने में सक्षम हो सकते हैं। यहाँ रेडहैट संदर्भ मैनुअल (पीडीएफ) है । एक शुरुआती गाइड (पीडीएफ) भी है

उपकरण आपको उस डेटा को प्राप्त करने के लिए पर्याप्त रूप से बहुमुखी दिखता है, विशेष रूप से probe::netdev.rxऐसा कुछ दिखता है जो आपको आने वाली प्रविष्टियों की जानकारी देगा, अब आपको "केवल" बफर में कतार का शुद्ध आकार या तो कुछ खोजने की आवश्यकता है या कुछ ऐसा है जो चीजों को गिनता है कतार छोड़कर…

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.