Ubuntu 9.10을 실행하는 Linux 서버에서 네트워크 성능 속도에 문제가 있습니다. 모든 유형의 트래픽에 대한 전송 속도는 1000mbit/s 유선 이더넷 연결에서 약 1.5MB/s입니다. 이 서버는 최근 삼바보다 55MB/s를 달성했습니다. 하드웨어 또는 네트워크 설정을 변경하지 않았습니다. 나는 정기적으로 업데이트를 실행하며 Ubuntu의 저장소에서 가장 최신의 가장 큰 것이이 컴퓨터에서 실행되고 있습니다.
데스크탑 Windows PC-1000 스위치-1000 스위치-Linux 서버
모든 스위치는 넷기어이며 모두 연결에 대해 녹색 표시등이 표시되어 연결이 1000mbit/s임을 의미합니다. 연결이 100mbit/s에 불과하면 표시등이 노란색입니다. 기타 진단 정보 :
[email protected]:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:6e:3e:ae:36
inet addr:192.168.1.30 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:6eff:fe3e:ae36/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:28678 errors:0 dropped:0 overruns:0 frame:0
TX packets:73531 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2109780 (2.1 MB) TX bytes:111039729 (111.0 MB)
Interrupt:22
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:113 errors:0 dropped:0 overruns:0 frame:0
TX packets:113 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:23469 (23.4 KB) TX bytes:23469 (23.4 KB)
[email protected]:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pg
Wake-on: g
Current message level: 0x00000037 (55)
Link detected: yes
[email protected]:~# mii-tool
eth0: negotiated 1000baseT-FD flow-control, link ok
서버는 1000mbit/s 연결이 있다고 생각합니다. Samba를 사용하여 파일을 복사하여 전송 속도를 테스트했습니다. 또한 서버에서 netcat (nc target 10000 <aBigFile)을 사용하여 Windows (nc -l -p 10000)로 전송했으며 비슷한 수준의 성능 저하를 보았습니다.
Hdparm을 사용하여 하드 드라이브의 속도를 테스트 한 결과 :
[email protected]:~# hdparm -tT /dev/md0
/dev/md0:
Timing cached reads: 1436 MB in 2.00 seconds = 718.01 MB/sec
Timing buffered disk reads: 444 MB in 3.02 seconds = 147.24 MB/sec
DD를 사용하여 전송하기 위해 동일한 파일을 읽으면 다음이 생성되었습니다.
[email protected]:/home/share/Series/New$ dd if=aBigFile of=/dev/null
3200369+1 records in
3200369+1 records out
1638589012 bytes (1.6 GB) copied, 12.7091 s, 129 MB/s
나는 당황했다. 네트워크가 수행 할 수있는 것보다 2 배 낮은 낮은 네트워크 성능의 원인은 무엇입니까?
내 전문적인 경험에서 나는 GNU/Linux에서 Samba로 좋은 네트워크 성능을 얻기 위해 고군분투했습니다. 당신은 당신이 그것으로 55MBps의 속도를 달성했다고 언급했고, 나는 그것을 믿는다. 그래서 나는 다른 무언가가 확실히 작동하고 있다고 생각한다.
그러나 NFS, FTP 및 SCP를 사용해 보셨습니까? 대역폭 문제가 서로 다른 프로토콜에서 일관 적입니까? 그렇다면 물리적 연결로 좁힐 가능성이 큽니다. 일관되지 않은 결과가 나오면 소프트웨어 문제 일 가능성이 높습니다.
다른 프로토콜을 테스트하는 것 외에도 전송에 암호화를 사용하고 있습니까? 예를 들어 rsync -z
를 사용하는 것은 압축을 활성화하는 데 적합하지만 CPU 비용이 발생하여 전체 전송 속도에 심각한 영향을 미칩니다. SSH
를 rsync
과 함께 사용하면 압축에 암호화가 적용되고 CPU가 약간의 스트레스를 받아 심각한 속도 저하를 초래합니다.
확인해야 할 몇 가지 사항 :
netperf는 네트워크 성능 문제를 해결하는 데 유용합니다. 그러나 netcat은 나쁘지 않습니다.
netstat -i
를 시도하고 rx/tx 오류를 찾으십시오.netstat -s
를 시도하고 tcp 문제를 찾으십시오. 파일 복사 전후의 값을 비교하고 재설정 또는 재전송에서 큰 급증을 찾으십시오.네트워크 정체를 확인할 수 있습니다. 아마도 다른 장치가 모든 대역폭을 소비하고 있습니까?
그 외에도 네트워크 인터페이스 및/또는 드라이버에 문제가있을 수 있습니다. 꽤 이상합니다.
가능하다면 이것이 실제로 OS/드라이버/카드 문제라는 의심을 없애기 위해 크로스 오버 케이블을 사용하여 컴퓨터를 함께 연결하십시오. 이렇게하면 방정식에서 스위치 및 기타 가능한 네트워킹 문제가 제거됩니다.