Я провожу тесты для комет и хочу посмотреть, сколько у меня открытых подключений.
На самом деле я использую 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 )'
Некоторые цифры раздел внизу эта страница также может вас заинтересовать.
Другой вариант - прочитать /proc/net/tcp
прямо. Чтобы увидеть все установленные TCP-соединения на 8080, вы должны сделать что-то вроде
$ printf %04X 8080
1F90
$ grep :1F90 /proc/net/tcp | grep ' 01 ' | wc -l
Если вы хотите сделать это в одном процессе (с меньшими накладными расходами ввода-вывода) и обработать угловые случаи, следующее говорит вам, сколько УСТАНОВЛЕННЫХ 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-соединения в системе ...