Пинг-запросы создают нагрузку на сервер? - PullRequest
1 голос
/ 18 декабря 2009

У меня много клиентов (около 4000). Каждый клиент пингует мой сервер каждые 2 секунды. Могут ли эти запросы ping создать нагрузку на сервер и замедлить ее?

Как я могу контролировать эту нагрузку? Теперь сервер медленно реагирует, но процессор почти простаивает и свободная память в порядке. Я использую Apache в Ubuntu.

Ответы [ 3 ]

7 голосов
/ 18 декабря 2009

Предполагая, что вы имеете в виду пинг UDP / ICMP только для того, чтобы увидеть, жив ли хост, 4000 хостов, вероятно, не сильно загружены и их довольно легко вычислить. С точки зрения использования процессора и памяти, ping обрабатывается вашим ядром и должен быть оптимизирован, чтобы не занимать много ресурсов. Итак, вам нужно посмотреть на сетевые ресурсы. Наиболее критическим моментом будет, если у вас полудуплексная связь, потому что все ваши хосты болтливы, вы будете вызывать множество коллизий и повторных передач (и отбрасывать пинг). Если все ссылки полнодуплексные, давайте рассчитаем фактический объем полосы пропускания, требуемый на сервере.

  • 4000 клиент @ 2 секунды
  • Каждый пинг составляет 72 байта на проводе (32 байта данных + 8 байтов заголовка ICMP + 20 байтов заголовка IP + 14 байтов Ethernet). * У вас могут быть дополнительные издержки, если вы используете теги vlan или ping на основе UDP
  • Если мы можем предположить, что пинги распределяются случайным образом, у нас будет 2000 пингов в секунду при 72 байтах = 144000 байт
  • Умножьте на 8, чтобы получить Bps = 1 152 000 бит / с или около 1,1 Мбит / с.
  • На 100 Мбит / с Lan это будет примерно 1,1% использования только для пингов.

Если это локальная сеть, я бы сказал, что это вообще без нагрузки, если она проходит через T1, то это огромная нагрузка. Таким образом, вы должны в основном выполнить те же вычисления, для которых сетевые ссылки также могут быть узким местом.

Наконец, если вы не используете эхо-запросы ICMP для проверки хоста, но имеете эхо-запрос уровня приложения, у вас будут все накладные расходы по тому протоколу, который вы используете, и эхо-запрос должен пройти весь путь до стек протоколов, и ваше приложение должно ответить. Опять же, это может быть очень минимальная нагрузка или она может быть огромной, в зависимости от деталей реализации и скорости сети. Если хост простаивает, я сомневаюсь, что это проблема для вас.

1 голос
/ 18 декабря 2009

Другая проблема помимо пропускной способности - это процессор. Если пинг направляется в процессор для обработки, тысячи из них могут вызвать нагрузку на любой процессор. Стоит следить - но, как вы сказали, ваш почти бездействует, поэтому, вероятно, сможет справиться. Стоит помнить, хотя.

В зависимости от клиентов, ping-пакеты могут быть разных размеров - их полезная нагрузка может быть просто «aaaaaaaaa», но некоторые могут быть «thequickbrownfoxjumpedoverthelazydog» - что, очевидно, опять же требует дополнительных требований к пропускной способности.

1 голос
/ 18 декабря 2009

Да, они могут. Запрос ping не увеличивает нагрузку на процессор, но, безусловно, требует пропускной способности и номинального объема процессора.

Если вы хотите контролировать это, вы можете использовать tcpdump или wireshark , или, возможно, настроить правило брандмауэра и отслеживать количество пакетов, которым оно соответствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...