Какое «Железо» нужно веб-приложению
Часто обращаются с вопросом похожим на вот этот– «Мы разработали приложение/внедряем систему на ASP.NET, какое точно нам нужно «железо» чтобы оно работало при 2000 пользователях?».
Всегда на этот вопрос хочется ответить – 64 процессорный кластер с терабайтом оперативной памяти ;-)
Плохо то, что и в самом вопросе нет практически никакой информации, которая дает шансы ответить на этот вопрос. Начиная с таких вопросов - Ежесекундно обращается 2000? В течение часа? Дня? Какими функциями приложения типично пользуются? Да и сколько не уточняй условия, однозначно точно ответить на этот вопрос все равно очень сложно.
Но! Если на самом деле хочется совершенно точно понять, какого масштаба оборудование требуется:
1) Берем Visual Studio for Test
2) Записываем типичные сценарии загрузки с помощью «Browser recording», которые легко предоставят аналитики системы. Нечто вроде "логон, пользователь идет сюда, кликает сюда, а потом делает поиск, логофф"
3) Включаем основные performance counters по процессору, диску, памяти, SQL.
4) Запускаем тест на наращивание количества пользователей до достижения какими либо performance counters пороговых значений. Ну например "наращивать каждую секунду на 10 пользователей, пока процессорная загрузка не будет 90%"
Ну а дальше, оперируя сухими цифрами пойдет простая математика. Проц грузится на 100% при RPS 50? А надо 90 RPS? Попробуем добавить еще один процессор. C помощью такого подхода можно понять на что способно оборудование, и каким оно должно быть с 90% точностью.