У меня есть немного необычная ситуация, когда мне нужно поддерживать соединения CLIENT tcp с другим сервером для тысяч мобильных пользователей на моих серверах (в основном мобильные устройства подключаются к моему серверу среднего уровня, когда они в состоянии, который поддерживает более стабильное подключение к стороннему серверу для мобильных устройств).
В любом случае, я разработал свое серверное приложение, используя Async Sockets (завершено в SslStream), и теперь у меня 1000 рабочих сессий на нем. Я очень доволен результатами, поскольку вижу около 0-10% среднего использования процессора на одноядерном процессоре, и со временем используется около 60 МБ памяти.
Мой вопрос: как мне масштабировать его, чтобы я мог достичь 100 000 или 200 000 или более клиентских сеансов, выполняемых на моем сервере? Опять же, это немного нетрадиционно, так как мой сервер не действует как сервер, так как я беспокоюсь об исходящих соединениях, а не о входящих.
Я знаю, что существует параметр реестра MaxUserPort, который нужно изменить, чтобы выйти за пределы значения по умолчанию, которое кажется 5000. Однако, похоже, существует еще один жесткий предел 65535, и я не слишком четко понимаю, где этот предел проживает. Является ли это пределом для сетевого интерфейса? Это глобальный лимит Windows? Это лимит на каждый процесс?
Если это ограничение для сетевого интерфейса, я могу добавить несколько сетевых интерфейсов и связать сокеты сеанса клиента с каждым интерфейсом (например: 65k на интерфейсе 1, 65k на интерфейсе 2 и т.д.)?
Я также не слишком уверен, что, если какие-либо параметры сокетов или свойства, которые я должен настроить, чтобы помочь вам разобраться. Прямо сейчас я не использую варианты сокетов.
Я бы очень благодарен за любые мысли по этому вопросу, так как ясный совет был довольно трудно найти на эту тему. Спасибо!