답변:
사용 iperf
합니다. 한 쪽 끝에서 서버 모드로 실행하고 네트워크의 다른쪽에있는 다른 컴퓨터에서 연결한다는 점에서 클라이언트 서버 배열입니다.
두 머신 중 하나가 실행됩니다.
sudo apt-get install iperf
iperf
머신 중 하나 에서 서버를 시작합니다 :
iperf -s
그런 다음 다른 컴퓨터에서 iperf
클라이언트로 연결하도록 지시하십시오.
iperf -c <address of other computer>
클라이언트 시스템에는 다음과 같은 내용이 표시됩니다.
oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.04 GBytes 893 Mbits/sec
물론 서버 시스템에서 방화벽을 실행하는 경우 포트 5001에서 연결을 허용하거나 -p
플래그를 사용하여 포트를 변경해야합니다 .
당신이 그렇게 nc
기울어지면 평범한 오래된 것 (netcat) 과 거의 같은 일을 할 수 있습니다 . 서버 머신에서 :
nc -vvlnp 12345 >/dev/null
그리고 클라이언트 캔 파이프를 통해 제로의 기가 바이트 dd
오버 nc
터널.
dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
데모로 :
$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s
타이밍이 주어 dd
지지만 파이프가 가져가는 속도만큼만 출력 할 수 있으므로 충분히 정확해야합니다. 마음에 들지 않으면 time
전화로 모든 것을 마무리 할 수 있습니다.
결과는 메가 바이트 단위 이므로 초당 초당 메가 비트 를 얻으려면 8을 곱하십시오 . 위의 데모는 944mbps에서 실행 중입니다.
iperf에 대한 Oli의 권장 사항과 동일합니다. 여러 포인트를 추가하고 싶습니다.
-t <seconds>
테스트 길이를 변경합니다. 동시 연결 수를 변경합니다. 예를 들어 30 초 동안 10 개의 연결을 함께 테스트하고 10 개의 개별 연결 속도와 함께 집계 된 결과를 제공합니다.-P <n>
iperf -c [target IP] -P 10 -t 30
wget
실행 가능하게 chmod
하면 바이너리를 직접 실행할 수 있습니다. 완벽하게 작동합니다.기본 설정을 사용하면 단일 연결 속도가 약간 변동한다는 것을 알았습니다. 그러나 3 + 병렬 연결을 사용하면 결과가 기가 바이트 스위치에서보다 일관됩니다. (일관되게 @ 910-920Mbps)
이 스크립트 를 사용 하면 컴퓨터와 일부 원격 호스트 간의 연결 속도를 쉽게 테스트 할 수 있습니다. 사용 예 :
$ scp-speed-test.sh user@remote_host 80000
user@remote_host
대상 호스트입니다 (이 호스트에 대한 ssh 액세스 권한이 있어야 함).80000
테스트 파일의 대략적인 크기 (kbs)는 원격 호스트에 수신됩니다. 필수 주장은 아닙니다./dev/random
(그것을 차단할 수 있습니다) 또는urandom
대신 dm-crypt로를 사용하여, 그들도 매우 느릴 수 있습니다 (링크 댓글 제안 ()으로 cryptsetup의 자주 묻는 질문을 참조하십시오 어떻게 암호 -와 장치를 닦아 수 2.19 grade randomness? ) 램에 파일이있을 수 있습니다.
이더넷 LAN을 낮은 레벨에서 테스트하려면 무료 Linux CLI 이더넷 테스트 도구 인 Etherate를 사용할 수 있습니다.
https://github.com/jwbensley/Etherate
iPerf (매우 훌륭합니다!)와 같은 도구가 IP 및 TCP 또는 UDP를 통해 작동 할 때 믹스에 버립니다. 이더넷 / OSI 계층 2를 통해 직접 테스트합니다.
아래 명령에는 추가 패키지가 필요하지 않고 SSH 액세스가 필요합니다.
ssh username@myserver.example.com 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress
출력 예 :
2992238080 bytes (3.0 GB) copied, 27.010250 s, 111 MB/s
5859375+0 records in
5859375+0 records out
3000000000 bytes (3.0 GB) copied, 27.1943 s, 110 MB/s
이 명령은 원격 서버의 stdout에 0으로 가득 찬 3GB (1000 ^ 3 바이트) 더미 파일을 인쇄하여 SSH를 통해 로컬 서버의 stdout에 인쇄 한 다음 로컬로 파이프 /dev/null
(즉 무시)합니다. 테스트를 진행하는 동안 진행 상황을 확인할 수도 있습니다.
확실히 다른 도구만큼 정확하지는 않지만 제 사용 사례는 추가 패키지를 설치하지 않고 네트워크 속도가 문제인지 테스트하려는 백업 프로세스를 디버깅하는 것이 었습니다.
두 호스트간에 대역폭 벤치마킹을위한 다른 멋진 명령 줄 도구도 있습니다.
server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address
server$ nepim
client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address
server$ goben
client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address
내가 가장 좋은 대답에 내 의견에서 지적했듯이,이 솔루션은 충분한 클라이언트 원인이 좋지 않아 / 서버는되지 최적화 ...에 짜 속도의 모든 비트를
내 해결책 :
램 디스크를 양쪽에 만드십시오 (따라서 저장 속도에 제한을받지 않으며 tmpfs가 아닌 ramfs로 만들 것을 제안합니다. 따라서 스왑에 들어 가지 않을 것입니다 ... 512M 이상의 여유 메모리를 남기지 않도록주의하십시오) 시스템의 경우 기가 이더넷을 사용하는 경우 SSD가 속도가 느려질 수 있습니다) 서버에 아파치를 설치 한 다음 램 디스크에 대한 링크를 만들고 램 디스크에 큰 파일을 거의 만들지 마십시오 (100M-1G, dd를 / dev / random에서 가져 오거나 손에 든다면 복사하십시오. 클라이언트 측으로 가서 고급 다운로드 프로그램으로 해당 측의 램 디스크에도 다운로드하십시오. lftp
잘, iperf와 9.5M / s netcat에 의해보고 된 75mbps와의 차이는 크다
내 솔루션 으로 11.18M / s 까지 :
1591129421 bytes transferred in 136 seconds (11.18M/s)
첫 번째 상자에 컴퓨터를 쉽게 연결하고 다른 상자를 첫 번째 상자에 연결하십시오. 그런 다음 컴퓨터에서 첫 번째 상자를 핑 (Ping)하여 결과를 저장하고 다른 상자를 핑 (Ping)하고 빼기를 수행합니다.