¡Yo también me he preguntado esto y su pregunta me motivó!
He recopilado qué tan cerca podría estar de cada una de las colas que enumeró con información relacionada con cada una. Agradezco comentarios / comentarios, cualquier mejora en el monitoreo hace que las cosas sean más fáciles de administrar.
net.core.somaxconn
net.ipv4.tcp_max_syn_backlog
net.core.netdev_max_backlog
$ netstat -an | grep -c SYN_RECV
Mostrará el recuento global actual de conexiones en la cola, puede dividir esto por puerto y poner esto en declaraciones ejecutivas en snmpd.conf si desea sondearlo desde una aplicación de monitoreo.
Desde:
netstat -s
Estos le mostrarán con qué frecuencia está viendo solicitudes de la cola:
146533724 packets directly received from backlog
TCPBacklogDrop: 1029
3805 packets collapsed in receive queue due to low socket buffer
fs.file-max
Desde:
http://linux.die.net/man/5/proc
$ cat /proc/sys/fs/file-nr
2720 0 197774
Este archivo (de solo lectura) proporciona la cantidad de archivos actualmente abiertos. Contiene tres números: el número de identificadores de archivos asignados, el número de identificadores de archivos libres y el número máximo de identificadores de archivos.
net.ipv4.ip_local_port_range
Si puede crear una lista de servicios de exclusión (netstat -an | grep LISTEN), puede deducir cuántas conexiones se están utilizando para la actividad efímera:
netstat -an | egrep -v "MYIP.(PORTS|IN|LISTEN)" | wc -l
También debe monitorear (desde SNMP):
TCP-MIB::tcpCurrEstab.0
También puede ser interesante recopilar estadísticas sobre todos los estados vistos en este árbol (establecido / time_wait / fin_wait / etc):
TCP-MIB::tcpConnState.*
net.core.rmem_max
net.core.wmem_max
Tendría que trazar / estratificar su sistema para solicitudes setsockopt. No creo que las estadísticas de estas solicitudes se rastreen de otra manera. Esto no es realmente un valor que cambie desde mi comprensión. La aplicación que ha implementado probablemente le pedirá una cantidad estándar. Creo que podría 'perfilar' su aplicación con strace y configurar este valor en consecuencia. (¿discutir?)
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem
Para realizar un seguimiento de lo cerca que está del límite, debe mirar el promedio y el máximo de los campos tx_queue y rx_queue (de forma regular):
# 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
Para rastrear errores relacionados con esto:
# netstat -s
40 packets pruned from receive queue because of socket buffer overrun
También debe estar monitoreando el grupo global 'buffer' (a través de SNMP):
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: Memory Buffers
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 74172456
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 51629704