Auch ich habe mich darüber gewundert und war von Ihrer Frage motiviert!
Ich habe zusammengetragen, wie nahe ich an jede der von Ihnen aufgelisteten Warteschlangen herankommen könnte, und habe einige Informationen zu den einzelnen Warteschlangen zusammengetragen. Ich freue mich über Kommentare und Feedback. Jede Verbesserung der Überwachung erleichtert die Verwaltung!
net.core.somaxconn
net.ipv4.tcp_max_syn_backlog
net.core.netdev_max_backlog
$ netstat -an | grep -c SYN_RECV
Zeigt die aktuelle globale Anzahl der Verbindungen in der Warteschlange an. Sie können diese Anzahl pro Port aufteilen und in exec-Anweisungen in der Datei snmpd.conf einfügen, wenn Sie sie von einer Überwachungsanwendung abrufen möchten.
Von:
netstat -s
Diese zeigen Ihnen, wie oft Sie Anfragen aus der Warteschlange sehen:
146533724 packets directly received from backlog
TCPBacklogDrop: 1029
3805 packets collapsed in receive queue due to low socket buffer
fs.file-max
Von:
http://linux.die.net/man/5/proc
$ cat /proc/sys/fs/file-nr
2720 0 197774
Diese (schreibgeschützte) Datei gibt die Anzahl der aktuell geöffneten Dateien an. Es enthält drei Zahlen: Die Anzahl der zugewiesenen Dateihandles, die Anzahl der freien Dateihandles und die maximale Anzahl der Dateihandles.
net.ipv4.ip_local_port_range
Wenn Sie eine Ausschlussliste von Diensten erstellen können (netstat -an | grep LISTEN), können Sie ableiten, wie viele Verbindungen für kurzlebige Aktivitäten verwendet werden:
netstat -an | egrep -v "MYIP.(PORTS|IN|LISTEN)" | wc -l
Sollte auch überwachen (von SNMP):
TCP-MIB::tcpCurrEstab.0
Es kann auch interessant sein, Statistiken über alle in diesem Baum angezeigten Zustände zu sammeln (established / time_wait / fin_wait / etc):
TCP-MIB::tcpConnState.*
net.core.rmem_max
net.core.wmem_max
Sie müssten Ihr System für setsockopt-Anforderungen verfolgen / stracen. Ich denke nicht, dass Statistiken für diese Anfragen anderweitig erfasst werden. Dies ist kein Wert, der sich nach meinem Verständnis ändert. Die Anwendung, die Sie bereitgestellt haben, wird wahrscheinlich nach einem Standardbetrag fragen. Ich denke, Sie könnten Ihre Anwendung mit strace "profilieren" und diesen Wert entsprechend konfigurieren. (diskutieren?)
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem
Um zu verfolgen, wie nahe Sie am Limit sind, müssten Sie den Durchschnitt und das Maximum der Felder tx_queue und rx_queue von (regelmäßig) anzeigen:
# 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
Um diesbezügliche Fehler zu verfolgen:
# netstat -s
40 packets pruned from receive queue because of socket buffer overrun
Sollte auch den globalen Pufferpool überwachen (über SNMP):
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: Memory Buffers
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 74172456
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 51629704