특정 TCP 포트에서 현재 몇 개의 연결이 열려 있는지 확인하려면 어떻게합니까? 얼마나 많은

나는 혜성 벤치 마크를하고 있으며 얼마나 많은 열린 연결이 있는지 알고 싶습니다.

실제로 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직접 읽는 것 입니다. 8080에서 설정된 모든 TCP 연결을 보려면 다음과 같이하십시오.

$ printf %04X 8080
1F90
$ grep :1F90 /proc/net/tcp | grep ' 01 ' | wc -l

단일 프로세스 (IO 오버 헤드가 적음)로 처리하고 코너 사례를 처리하려는 경우 다음은 로컬 포트 ​​8080이있는 ESTABLISHED TCP 연결 수를 나타냅니다.

$ 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 연결 수를 표시합니다 …


답변