私もこれを疑問に思っており、あなたの質問に動機付けられました!
リストした各キューにどれだけ近いかを、それぞれに関連する情報とともに収集しました。コメント/フィードバックを歓迎します。監視を改善すると、管理が容易になります。
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
この(読み取り専用)ファイルは、現在開いているファイルの数を示します。割り当てられたファイルハンドルの数、空きファイルハンドルの数、およびファイルハンドルの最大数の3つの数字が含まれています。
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
このツリーで見られるすべての状態に関する統計を収集することも興味深いかもしれません(established / 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