Максимальное количество подключений TCP / IP в Windows Server 2008

У меня есть служба .Net, которая прослушивает один порт по протоколу TCP. Клиенты подключаются, а затем передают данные в течение некоторого времени (от нескольких минут до нескольких часов).

Есть ли ограничение на количество подключений на сервере Windows 2008? Ни одного не попал, так как сейчас пользователей до 50. Планируется, что у вас будут тысячи пользователей, поэтому я хотел бы знать, возникнут ли проблемы в будущем.

Изменить:
Как ответил Cloud, кажется, что в некоторых версиях Windows Server 2008 есть некоторые ограничения. Есть ли какие-либо ссылки на эти ограничения? Я пробовал Google, но он возвращает статьи об ограничении полусвязанных TCP-соединений.


person zendar    schedule 28.10.2009    source источник


Ответы (2)


Сколько тысяч пользователей?

В прошлом я проводил несколько тестов клиент-серверных соединений TCP / IP на Windows 2003 Server и управлял более чем 70 000 соединений на виртуальной машине с достаточно низкими характеристиками. (подробности см. здесь: http://www.lenholgate.com/blog/2005/10/the-64000-connection-question.html). Я был бы чрезвычайно удивлен, если бы Windows 2008 Server ограничился менее чем 2003 Server, и, IMHO, публикация, на которую ссылается Cloud, слишком расплывчата, чтобы ее можно было широко использовать. Подобные вопросы возникают часто, я писал в блоге, почему я не думаю, что это то, о чем вам действительно стоит беспокоиться здесь: http://www.serverframework.com/asynchronousevents/2010/12/one-million-tcp-connections.html.

Лично я бы протестировал и посмотрел. Даже если в версии Windows 2008 Server, которую вы собираетесь использовать, нет никаких ограничений, практические ограничения по-прежнему будут зависеть от памяти, скорости процессора и конструкции сервера.

Если вы хотите запустить какие-то «общие» тесты, вы можете использовать мой тест мультиклиентного соединения и связанный с ним эхо-сервер. Подробно здесь: http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html и здесь: http://www.lenholgate.com/blog/2005/11/simple-echo-servers.html. Это то, что я использовал для запуска моих собственных тестов для моей серверной инфраструктуры, и именно они позволили мне создать 70 000 активных подключений на виртуальной машине Windows 2003 Server с 760 МБ памяти.

Отредактировано для добавления деталей из комментария ниже ...

Если вы уже думаете о нескольких серверах, я бы применил следующий подход.

  1. Используйте бесплатные инструменты, на которые я ссылаюсь, и докажите себе, что вы можете создать разумное количество подключений к своей целевой ОС (остерегайтесь ограничений Windows на динамические порты, которые могут привести к сбою ваших клиентских подключений, ищите MAX_USER_PORT).

  2. во время разработки регулярно тестируйте свой реальный сервер с помощью тестовых клиентов, которые могут создавать соединения и фактически «что-то делать» на сервере. Это поможет предотвратить создание сервера способами, ограничивающими его масштабируемость. См. Здесь: http://www.serverframework.com/asynchronousevents/2010/10/how-to-support-10000-or-more-concurrent-tcp-connections-part-2-perf-tests-from-day-0.html

person Len Holgate    schedule 28.10.2009
comment
Спасибо за информацию. Мы работаем над многопользовательской игрой, где игроки разделены по комнатам - как в покере. Сколько тысяч - столько, сколько мы сможем поставить на сервер. Надеюсь, мы сможем обслуживать 50 000–100 000 пользователей на каждом сервере. - person zendar; 28.10.2009
comment
Поскольку вы уже думаете о нескольких серверах, я бы выбрал следующий подход. Сначала используйте бесплатные инструменты, на которые я ссылаюсь, и докажите себе, что вы можете создать разумное количество подключений к своей целевой ОС (остерегайтесь ограничений Windows на динамические порты, которые могут привести к сбою ваших клиентских подключений, ищите MAX_USER_PORT). Во-вторых, во время разработки регулярно тестируйте свой реальный сервер с помощью тестовых клиентов, которые могут создавать соединения и фактически «что-то делать» на сервере. Это поможет предотвратить создание сервера способами, ограничивающими его масштабируемость. - person Len Holgate; 28.10.2009
comment
Не могли бы вы вложить совет из своего комментария в ответ. Это ценная информация, и она действительно должна стать частью ответа. - person zendar; 28.10.2009

Существует ограничение на количество полуоткрытых подключений, но не для активных соединения. Хотя это, похоже, зависит от типа сервера Windows 2008, по крайней мере, согласно этот сотрудник MSFT:

Это зависит от выпуска, выпуски Web и Foundation имеют ограничения на количество подключений, а Standard, Enterprise и Datacenter - нет.

person pyrocumulus    schedule 28.10.2009
comment
Извините за незнание, а что такое полуоткрытое соединение? - person zendar; 28.10.2009
comment
Я добавил ссылку на полуоткрытые соединения, которая должна это объяснить. - person pyrocumulus; 28.10.2009
comment
Чтобы улучшить этот ответ, приветствуется ссылка на лимит полуоткрытых / эмбриональных соединений на W2K8. - person Dereckson; 08.11.2013