Dlaczego to połączenie sieciowe jest tak wolne?


11

Mam pewne problemy z szybkością działania sieci na serwerze Linux z systemem Ubuntu 9.10. Prędkości transferu dla wszystkich rodzajów ruchu wynoszą około 1,5 MB / s przy przewodowym połączeniu Ethernet 1000 Mb / s. Ten serwer osiągnął w ostatnim czasie 55 MB / s w porównaniu z sambą. Nie zmieniłem konfiguracji sprzętu ani sieci. Regularnie uruchamiam aktualizacje, a na tym komputerze działają najnowsze i najlepsze repozytoria Ubuntu.

Konfiguracja sprzętu

Komputer stacjonarny z systemem Windows - przełącznik 1000 - przełącznik 1000 - serwer Linux

Wszystkie przełączniki są podłączone do sieci i wszystkie pokazują zielone światło dla swoich połączeń, co oznacza, że ​​połączenie wynosi 1000 Mb / s. Lampki świecą na żółto, gdy połączenie ma prędkość tylko 100 Mb / s. Inne informacje diagnostyczne:

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

Serwer uważa, że ​​ma połączenie 1000 Mb / s. Przetestowałem prędkość transferu, kopiując pliki przy użyciu Samby. Użyłem również netcata (nc target 10000 <aBigFile) na serwerze, aby przenieść się do systemu Windows (nc -l -p 10000) i widziałem podobne poziomy niskiej wydajności.

Przetestowałem prędkość dysków twardych za pomocą hdparm i uzyskałem:

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

Odczyt tego samego pliku do przesłania za pomocą DD spowodował, że:

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

Jestem zakłopotany. Co może być przyczyną niskiej wydajności sieci, która jest o 2 rzędy wielkości niższa niż zdolność sieci?


serverfault jest prawdopodobnie lepszym miejscem do zadawania takich pytań.
Maciej Piechotka,

Wypróbuj to pytanie ServerFault, aby uzyskać ogólne techniki przydatne w rozwiązywaniu problemów z wolnym połączeniem sieciowym.

Jeśli nic się nie zmieniło, obwiniaj zużycie (kable).
Mel

Odpowiedzi:


6

Niektóre rzeczy, które należy rozważyć:

  1. Dupleks - jeśli jedna strona uważa, że ​​łącze jest w pełni dupleksowe, a druga strona uważa, że ​​łącze jest w połowie dupleksowe, spodziewaj się zła.
  2. Wadliwy przełącznik? Omiń to / nich.
  3. Ramki Jumbo. 9000 bajtów MTU zmniejsza narzut, co powinno zwiększyć przepustowość (tracąc trochę opóźnienia). Wygląda na to, że twój problem jest tak poważny, że to nie pomoże.
  4. Funkcje TCP: ECN, SACK, alg kontrola przeciążenia
  5. Rozmiary okien wysyłania / odbierania TCP ( szczegóły dla systemu Linux )

Netperf doskonale radzi sobie z rozwiązywaniem problemów z wydajnością sieci. Ale Netcat wcale nie jest taki zły.


6

W moim doświadczeniu zawodowym walczyłem o uzyskanie dobrej, solidnej wydajności sieci z Sambą w systemie GNU / Linux. Wspomniałeś, że osiągnąłeś z tym prędkość 55 MB / s, co, jak sądzę, więc zgaduję, że coś innego jest zdecydowanie w grze.

Jednak czy próbowałeś NFS, FTP i SCP? Czy problemy z przepustowością są spójne w różnych protokołach? Jeśli tak, to prawdopodobnie ogranicza się do fizycznego połączenia. Jeśli uzyskasz niespójne wyniki, prawdopodobnie jest to problem z oprogramowaniem.

Czy oprócz testowania innych protokołów używasz szyfrowania podczas przesyłania? Na przykład używanie rsync -zjest przydatne do włączania kompresji, ale wiąże się to z kosztem procesora, co poważnie wpływa na ogólną szybkość transferu. Jeśli używasz SSHz rsync, masz szyfrowanie oprócz kompresji, a twój procesor będzie trochę obciążony, co spowoduje poważne kary za szybkość.


2
  1. Spróbuj netstat -iposzukać błędów rx / tx.
  2. Spróbuj netstat -sposzukać problemów z tcp - porównaj wartości przed i po skopiowaniu pliku i poszukaj dużych skoków resetu lub retransmisji.

Niestety po 100 MB nie ma żadnych błędów TX / RX, a liczba resetów była konsekwentnie 4 od początku do końca testu
Paul Keeble

0

Możesz sprawdzić przeciążenie sieci; może niektóre inne urządzenia zużywają całą przepustowość?

Poza tym może coś jest nie tak z interfejsem sieciowym i / lub sterownikiem. Całkiem dziwne.


W momencie testu były to jedyne dwa urządzenia w sieci, nic więcej nie było włączone.
Paul Keeble,

0

Jeśli to w ogóle możliwe, aby usunąć wszelkie wątpliwości, czy rzeczywiście jest to problem z systemem operacyjnym / sterownikiem / kartą, połącz komputery razem za pomocą kabla krosowego. Spowoduje to usunięcie przełącznika i innych możliwych problemów z siecią z twojego równania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.