私はいくつかの彗星のベンチマークを行っています、そして私が持っているオープンコネクションの数を見たいのですが。
実際、私はnetstatを使用しています:
netstat -ant | grep 8080 | grep EST | wc -l
しかし、数をリストするのに約4〜6分必要です。リアルタイムで表示できるツールはありますか?開いている接続の数は100'000〜250'000です。
lsof
の方が良いかどうかはわかりませんが、試してみてください。
lsof -ni:8080 -sTCP:ESTABLISHED | wc -l
接続の統計情報を確認するだけの場合は、ss
スイートのiproute
ユーティリティを試してください。
# ss -s
Total: 1788 (kernel 3134)
TCP: 1638 (estab 1409, closed 162, orphaned 0, synrecv 0, timewait 127/0), ports 0
Transport Total IP IPv6
* 3134 - -
RAW 0 0 0
UDP 74 69 5
TCP 1476 1444 32
INET 1550 1513 37
FRAG 0 0 0
次のように、確立されたすべての接続に関する詳細情報を表示することもできます。
ss -n state established
…またはssh接続のみ:
ss -n state established '( dport = :ssh or sport = :ssh )'
このページ の下部にあるいくつかの番号セクションも興味深いかもしれません。
もう1つのオプションは、/proc/net/tcp
を直接読み取ることです。確立されたすべてのTCP接続を8080で確認するには、次のようにします。
$ printf %04X 8080
1F90
$ grep :1F90 /proc/net/tcp | grep ' 01 ' | wc -l
単一のプロセスで実行する場合(IOオーバーヘッド)を減らし、コーナーケースを処理する場合)、以下は、ESTABLISHED TCP接続にローカルポートがある数を示します。 8080:
$ Perl -anle '
$F[1] =~ /:1F90/ and $F[3] =~ /01/ and $cnt++;
END { print 0+$cnt }
' /proc/net/tcp
8080でリッスンするマシンのソフトウェアがIPv6をサポートしている場合は、/proc/net/tcp6
も読む必要があります。プログラムがIPv6ソケットを使用している場合は、IPv4を使用している場合でも接続が表示されます。
より簡単です
#netstat -at | wc -l
TCPシステム上の接続の数を表示します...