Назад | Перейти на главную страницу

10-20 тысяч TCP-соединений на сервере (ах) Windows

Какая конфигурация мне нужна для серверов на базе Windows для одновременной поддержки 10-20 тысяч TCP-соединений. 99% этих соединений будут отправлять только сигналы поддержки активности (но будут оставаться активными) с интервалом в 60 секунд, а остальные 1% будут отправлять / получать данные XML в любой момент времени.

Может ли кто-нибудь предложить мне ту инфраструктуру, которую мне нужно настроить для выполнения вышеуказанных требований?

Это довольно много связей!

При условии, что все не подключается в одно и то же время или ваше приложение допускает постановку в очередь / небольшую задержку, я действительно не думаю, что у вас возникнут проблемы с процессором или памятью, если вы возьмете средний современный ящик ( Минимум Quad Core, 4-8 ГБ памяти), но я думаю, вам захочется взглянуть на серьезные Сетевое оборудование Intel и настройка сети Windows (например, Смотри сюда, но этот список довольно старый, и я не уверен, сколько еще применимо).

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

Кроме того, для такого количества подключений вам нужно будет подумать о модернизации всей вашей инфраструктуры - например, более быстрых / мощных маршрутизаторов / коммутаторов.

Я надеюсь, что вы написали сервер на основе событий, а не на основе потоков, поэтому вы избегаете использования 1+ МБ стека на соединение. Предполагая, что ядро ​​Windows должно уметь обрабатывать такое количество открытых сокетов с минимальным изменением конфигурации. Видеть http://smallvoid.com/article/winnt-tcpip-max-limit.html.

Вы также захотите изучить порты завершения ввода-вывода Windows, чтобы выполнять асинхронный сетевой ввод-вывод более эффективно, чем при использовании цикла select ().

Планируете ли вы сделать это с помощью универсального многопоточного веб-сервера, такого как IIS? Если это так, подумайте еще раз (один поток на соединение = массовый сбой с 20К соединениями).