Я хотел бы иметь как можно больше соединений (отдельные соединения от множества разных клиентов) на сервере под управлением Windows Server 2008, чтобы поддерживать приложение в стиле Comet. Приложение написано на C #. Соединения не будут болтливыми, они просто должны быть открыты (и оставаться открытыми). Купить много памяти и быстрые процессоры - не проблема.
Насколько я могу судить, я буду ограничен 65 тысячами одновременных открытых подключений на одну сетевую карту - максимальное количество портов. Это точно? Или я могу как-то выйти за пределы 65k подключений / NIC? Похоже, что существуют серверные продукты для Linux по крайней мере, поддерживающие сотни тысяч соединений. Как они это делают?
Вы можете выйти далеко за пределы 65 000 подключений; поскольку у вас может быть несколько подключений на порт (после принятия прослушиватель может подключиться к другому клиенту). Один конец или другой должны иметь некоторую разницу, обычно клиент выбирает случайный порт. Windows по умолчанию ограничена несколькими более чем 3000 из этих случайных портов; так что ваш типичный клиент будет максимально использовать это. Однако можно настроить клиент по-другому, и многие * nix ограничены гораздо большим, чем Windows.
В реестре есть параметр, ограничивающий максимальное количество подключений до 16 миллионов. Но есть и другие, более практические проблемы, которые обычно ограничивают вас меньшим (вы можете изменить значение реестра).