Предполагая, что вы имеете в виду пинг 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 для проверки хоста, но имеете эхо-запрос уровня приложения, у вас будут все накладные расходы по тому протоколу, который вы используете, и эхо-запрос должен пройти весь путь до стек протоколов, и ваше приложение должно ответить. Опять же, это может быть очень минимальная нагрузка или она может быть огромной, в зависимости от деталей реализации и скорости сети. Если хост простаивает, я сомневаюсь, что это проблема для вас.