나도 이것을 궁금해하고 귀하의 질문에 동기를 부여했습니다!
나는 당신이 열거 한 각각의 큐에 얼마나 관련이있는 정보를 가지고 올 수 있는지 모았습니다. 의견 / 피드백을 환영합니다. 모니터링 기능이 향상되어 관리가 쉬워졌습니다!
net.core.somaxconn
net.ipv4.tcp_max_syn_backlog
net.core.netdev_max_backlog
$ netstat -an | grep -c SYN_RECV
큐의 현재 전체 연결 수를 표시합니다. 모니터링 응용 프로그램에서 폴링하려는 경우 포트 당이를 연결 해제하고 snmpd.conf의 exec 문에 넣을 수 있습니다.
에서:
netstat -s
다음은 대기열에서 요청을 보는 빈도를 보여줍니다.
146533724 packets directly received from backlog
TCPBacklogDrop: 1029
3805 packets collapsed in receive queue due to low socket buffer
fs.file-max
에서:
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
setsockopt 요청을 위해 시스템을 dtrace / strace해야합니다. 이러한 요청에 대한 통계는 달리 추적되지 않는다고 생각합니다. 이것은 실제로 내 이해에서 변화하는 가치가 아닙니다. 배포 한 응용 프로그램에 표준 금액이 필요할 수 있습니다. strace로 애플리케이션을 '프로파일'하고 그에 따라이 값을 구성 할 수 있다고 생각합니다. (논의하다?)
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
또한 SNMP를 통해 글로벌 '버퍼'풀을 모니터링해야합니다.
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: Memory Buffers
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 74172456
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 51629704