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

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

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

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

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

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

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

Другие вопросы по тегам