Почему это сетевое соединение такое медленное?

11

У меня проблемы с производительностью сети на сервере Linux под управлением Ubuntu 9.10. Скорость передачи для всех типов трафика составляет около 1,5 МБ / с при проводном соединении Ethernet со скоростью 1000 Мбит / с. Этот сервер достиг 55 МБ / с по сравнению с Samba в недавнем прошлом. Я не изменил аппаратную или сетевую настройку. Я регулярно запускаю обновления, и последние и самые лучшие из репозиториев Ubuntu работают на этой машине.

Аппаратная настройка

Настольный ПК с Windows - коммутатор 1000 - коммутатор 1000 - сервер Linux

Все коммутаторы являются netgear, и все они показывают зеленый свет для их соединений, что означает, что соединение составляет 1000 Мбит / с. Индикаторы желтого цвета, когда скорость соединения составляет всего 100 Мбит / с. Другая диагностическая информация:

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

Сервер считает, что имеет соединение 1000 Мбит / с. Я проверил скорость передачи путем копирования файлов с помощью Samba. Я также использовал netcat (nc target 10000 <aBigFile) на сервере для передачи в Windows (nc -l -p 10000) и видел аналогичные уровни низкой производительности.

Я проверил скорость жестких дисков с помощью 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 порядка ниже, чем то, на что способна сеть?

Пол Кибл
источник
serverfault, вероятно, лучшее место для того, чтобы задавать такие вопросы.
Мацей Пехотка
Попробуйте этот вопрос о ServerFault для общих методов, полезных для устранения неполадок медленного сетевого подключения.
Если ничего не изменилось, виноват износ (кабели).
Мел

Ответы:

6

Некоторые вещи, которые вы должны рассмотреть, чтобы проверить:

  1. Дуплекс - если одна сторона считает, что канал является полнодуплексным, а другая сторона считает, что канал полудуплексный, ожидайте ошибки.
  2. Дефектный выключатель? Обойти это / их.
  3. Джамбо кадры. MTU в 9000 байт уменьшает накладные расходы, что должно увеличить пропускную способность (исключая небольшую задержку). Похоже, ваша проблема настолько серьезна, что это не поможет.
  4. Особенности TCP: ECN, SACK, контроль перегрузки alg
  5. Размеры окна отправки / получения TCP ( подробности для linux )

Netperf отлично справляется с диагностикой производительности сети. Но Netcat не плохо в крайнем случае.

Брайан Каин
источник
6

В своем профессиональном опыте я изо всех сил пытался добиться хорошей стабильной работы сети с Samba на GNU / Linux. Вы упомянули, что вы достигли скорости 55 Мбит / с с этим, я верю, поэтому я предполагаю, что определенно что-то еще в игре.

Тем не менее, вы пробовали NFS, FTP и SCP? Являются ли проблемы пропускной способности одинаковыми для разных протоколов? Если это так, то, скорее всего, оно сузится до физического соединения. Если вы получите противоречивые результаты, то это скорее всего проблема с программным обеспечением.

Помимо тестирования других протоколов, вы используете шифрование при передаче? Например, использование rsync -zсжатия полезно для включения сжатия, но оно требует затрат на процессор, что серьезно влияет на общую скорость передачи. При использовании SSHс rsync, тогда у вас есть шифрование поверх сжатия, и ваш процессор будет испытывать небольшую нагрузку, что приведет к серьезным потерям скорости.

Аарон Топонсе
источник
2
  1. Попробуйте netstat -iнайти ошибки rx / tx.
  2. Попробуйте netstat -sпоискать проблемы с tcp - сравните значения до и после копирования файла и поищите большие всплески при перезагрузке или повторной передаче.
Рафаэль Феррейра
источник
Увы, после 100 МБ ошибок TX / RX нет вообще, а количество перезагрузок было последовательно 4 с начала и до конца теста
Пол Кибл
0

Вы можете проверить загруженность вашей сети; возможно, некоторые другие устройства потребляют всю вашу пропускную способность?

Кроме того, возможно, что-то не так с вашим сетевым интерфейсом и / или его драйвером. Довольно странно.

pmalmsten
источник
На момент тестирования это были только два устройства в сети, больше ничего не было.
Пол Кибл
0

Если это вообще возможно, чтобы устранить большинство сомнений в том, что это действительно проблема ОС / драйвера / карты, соедините компьютеры вместе, используя перекрестный кабель. Это удалит коммутатор и другие возможные проблемы с сетью из вашего уравнения.

Стивен Яздевский
источник