이 네트워크 연결이 왜 그렇게 느린가요?

이 네트워크 연결이 왜 그렇게 느린가요?

Ubuntu 9.10을 실행하는 Linux 서버에서 네트워크 성능 속도 문제가 발생하고 있습니다. 1000mbit/s 유선 이더넷 연결에서는 모든 유형의 트래픽이 약 1.5MB/s로 전송됩니다. 최근 서버가 삼바 속도를 55MB/s 초과했습니다. 하드웨어나 네트워크 설정을 변경하지 않았습니다. 저는 정기적으로 업데이트를 실행하고 있으며 Ubuntu 리포지토리의 최신 및 최고의 버전이 이 컴퓨터에서 실행되고 있습니다.

하드웨어 설정

데스크탑 Windows PC - 1000 스위치 - 1000 스위치 - Linux 서버

모든 스위치는 넷기어이며 해당 연결에는 모두 녹색 표시등이 표시됩니다. 이는 연결 속도가 1000mbit/s임을 의미합니다. 연결 속도가 100mbit/s에 불과하면 표시등이 노란색입니다. 추가 진단 정보:

root@server:~# 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)


root@server:~# 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

root@server:~# mii-tool
eth0: negotiated 1000baseT-FD flow-control, link ok

서버는 1000mbit/s 연결이 있다고 생각합니다. 삼바를 이용해 파일을 복사해 전송 속도를 테스트해봤습니다. 또한 Windows(nc -l -p 10000)로 전송하기 위해 서버에서 netcat(nc target 10000 < aBigFile)을 사용했는데 비슷한 수준의 성능 저하를 확인했습니다.

hdparm을 사용하여 하드 드라이브의 속도를 테스트한 결과 다음과 같은 결과를 얻었습니다.

root@server:~# 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를 사용하여 전송하기 위해 동일한 파일을 읽으면 다음과 같은 결과가 생성됩니다.

paul@server:/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배 낮은 원인은 무엇입니까?

답변1

확인해야 할 몇 가지 사항이 있습니다.

  1. 이중 - 한 쪽에서는 링크가 전이중이라고 생각하고 다른 쪽에서는 링크가 반이중이라고 생각하는 경우 바람직하지 않은 상황이 예상될 수 있습니다.
  2. 스위치에 결함이 있습니까? 그 주위를 둘러보세요.
  3. 점보 프레임. 9000바이트 MTU는 오버헤드를 줄여 처리량을 증가시킵니다(약간의 대기 시간이 발생하지만). 문제가 심각한 것 같지만 별 도움이 되지 않습니다.
  4. TCP 기능: ECN, SACK, 혼잡 제어 알고리즘
  5. TCP 보내기/받기 창 크기(리눅스 세부정보)

netperf는 네트워크 성능 문제를 해결하는 데 적합합니다. 하지만 상황에 따라 netcat도 나쁘지는 않습니다.

답변2

내 전문적인 경험에 따르면, 나는 GNU/Linux에서 Samba를 사용하여 훌륭하고 안정적인 네트워크 성능을 얻으려고 애썼습니다. 당신은 그것으로 55MBps를 달성했다고 언급했는데, 나는 그것이라고 생각하므로 다른 요인이 작용할 것이라고 추측합니다.

그런데 NFS, FTP, SCP를 사용해 보셨나요? 다양한 프로토콜의 대역폭 문제가 일관됩니까? 그렇다면 물리적 연결이 문제일 수 있습니다. 일관되지 않은 결과가 나타나면 소프트웨어 문제일 수 있습니다.

다른 프로토콜을 테스트하는 것 외에도 전송 중 암호화를 사용하고 있습니까? 예를 들어 rsync -z압축을 사용하면 훌륭하지만 CPU 비용이 소모되어 전체 전송 속도에 심각한 영향을 미칩니다. SSHwith 을 사용하면 rsync압축 위에 암호화를 수행하게 되고 CPU에 약간의 스트레스가 가해져 심각한 속도 손실이 발생합니다.

답변3

  1. netstat -irx/tx 오류를 찾아보세요 .
  2. TCP 문제를 찾아 보십시오 netstat -s. 파일 복사 전후의 값을 비교하고 재설정 또는 재전송에서 큰 폭의 스파이크를 찾으십시오.

답변4

가능하다면 이것이 실제로 OS/드라이버/카드 문제인지에 대한 대부분의 사람들의 의심을 없애려면 크로스오버 케이블을 사용하여 컴퓨터를 서로 연결하십시오. 이렇게 하면 방정식에서 스위치 및 기타 가능한 네트워크 문제가 제거됩니다.

관련 정보