Без лучшего понимания вашего приложения сложно ответить на некоторые из них, но в целом вы правы, что для проведения «истинного» стресс-теста вашего сервера было бы идеально иметь 100 ядер (используя цель100 одновременных пользователей), то есть 100 компьютеров.Различные проблемы, тем не менее, вероятно, покажут это как легкую задачу.
У меня есть механизм связи, который я создал пару лет назад (.NET / C #), в котором используются асинхронные сокеты - нужны были максимально быстрые скорости, поэтому нам пришлось забыть о добавлении любых дополнительных слоев поверх сокета, таких как HTTPили любые другие высшие абстракции.Работая на четырехъядерном компьютере с тактовой частотой 3,0 ГГц и 4 ГБ оперативной памяти, этот сервер легко обрабатывает трафик ~ 2200 одновременных подключений.Там есть переключатель Gb, и все ПК имеют Gb NIC.Даже при одновременной связи всех ПК редкость загрузки процессора> 30% на этом сервере.Я предполагаю, что это из-за всей задержки, которая присуща «общей системе».
У нас есть новое требование для поддержки 50 000 одновременных пользователей, которое я сейчас внедряю.Сервер оснащен двухъядерными процессорами с частотой 2,8 ГГц, 64-разрядной ОС и 12 ГБ оперативной памяти.Наше моделирование показывает, что этого компьютера более чем достаточно для работы с пользователями 50K.
Такие проблемы, как задержка в сети, о которой я упоминал (не забудьте про CAT 3 против CAT 5 и CAT 6), соединения с базой данных, типыхранящихся данных и средних размеров записи, проблем со ссылками, скорости объединительной платы и шины, скорости и размера жесткого диска и т. д., и т. д. и т. п., играют столь же важную роль, что и замедление платформы «в целом».Я полагаю, что в вашей системе может быть 500, 750, 1000 или даже больше пользователей.
Раньше цель состояла в том, чтобы никогда не оставлять поток заблокированным слишком долго ... новая цельчтобы все ядра были заняты.
У меня есть еще одно приложение, которое ежедневно загружает и анализирует содержание ~ 7800 URL.Работа на двухъядерном ядре с тактовой частотой 3,0 ГГц (64-разрядная версия Windows Ultimate 7) с 24 ГБ ОЗУ, на выполнение этого процесса уходило ~ 28 минут.Просто переключая цикл на Parallel.ForEach (), весь процесс теперь занимает <5 минут.Моя загрузка процессора, которую мы видели, всегда составляет менее 20%, а максимальная загрузка сети - только 14% (CAT 5 на сетевой карте Gb через стандартный тупой концентратор Gb и линию T-1). </p>
Сохранениевсе занятые ядра имеют огромное значение, особенно это касается приложений, которые проводят много времени в ожидании ввода-вывода.