Если вы выберете разумную архитектуру для своего сервера, тогда предел будет связан с памятью и процессором.ИМХО, вы никогда не достигнете жесткого предела, который Мартин упоминает:)
Так что вместо того, чтобы беспокоиться о теоретическом пределе, которого вы никогда не достигнете, вы должны, ИМХО, подумать о том, как вы будете разрабатывать свое приложение икак вы будете тестировать его, чтобы определить текущее максимальное количество клиентских подключений, которое вы можете поддерживать для вашего приложения на данном оборудовании.Для меня важно, чтобы вы запустили ваши тесты перфорации с 0-го дня (см. здесь для публикации в блоге, где я объясняю это).Современные операционные системы и аппаратное обеспечение позволяют создавать очень масштабируемые системы, но простые повседневные ошибки в кодировании и проектировании могут легко расточить эту масштабируемость, поэтому вы просто ДОЛЖНЫ постоянно выполнять тесты производительности, чтобы знать, когда вы строите препятствия для своегоспектакль.Вы просто не можете вернуться и исправить подобные ошибки в конце проекта.
Кроме того, я провел несколько тестов на Windows 2003 Server с ВМ с низкой спецификацией и легко выполнил более 70 000 одновременных и активныхсоединения с простым сервером на основе перекрывающегося проекта ввода-вывода (порта завершения ввода-вывода).См. этот ответ для более подробной информации.
Мой личный подход состоит в том, чтобы быстро собрать оболочку сервера, используя любую технологию, которую вы выберете (я предпочитаю неуправляемый C ++ с использованием портов завершения ввода-вывода и минимальных потоков), см. это сообщение в блоге для более подробной информации.Затем создайте клиент или серию клиентов, которые могут провести стресс-тестирование приложения и продолжать обновлять и запускать тестовые клиенты по мере реализации логики вашего сервера.Вы ожидаете увидеть постепенно уменьшающуюся кривую максимального числа одновременных клиентов по мере того, как вы будете увеличивать сложность своего сервера;Значительное снижение масштабируемости должно привести к тому, что вы будете проверять последние проверки, чтобы найти неудачные дизайнерские решения.