Мы внедряем новое решение в нашей классической среде ASP, которое использует COM-взаимодействие, чтобы заставить компонент .NET выполнить некоторую работу. Решение работает отлично, и наш руководитель группы хочет убедиться, что оно будет работать хорошо под нагрузкой, поскольку мы впервые работаем с компонентами .NET на нашем сайте.
Что мне нужно учитывать, чтобы сделать правильный тест, чтобы убедиться, что новый код, который я ввел, не сломается под нагрузкой?
Что я уже делаю:
Я сделал простую веб-страницу asp, которая вызывает новый компонент на основе информации в строке запроса. Строка запроса также имеет параметр «off switch», поэтому я могу протестировать страницу без компонента по умолчанию. Сама страница пуста, за исключением того, что она возвращает значение, представляющее, был ли компонент успешным, неудачным или был пропущен.
Я написал простое консольное приложение, которое использует HttpWebRequest
для итеративных вызовов страницы ASP, используя уникальные данные из базы данных при каждом вызове. Все это делает и проверяет значение, которое возвращает страница, и сохраняет данные.
Затем я развернул консольное приложение на четырех разных компьютерах нашей внутренней сети. В одном тесте я настроил один экземпляр приложения на каждом из компьютеров, а в другом - я установил пять экземпляров приложения на каждом компьютере и настроил их на одновременное попадание на сервер разработки. Каждый экземпляр приложения отправлял 150 итеративных запросов на веб-сервер.
Для каждого сценария (один экземпляр на каждом компьютере и пять экземпляров на каждом компьютере) я запускал тест дважды, один раз без вызова компонента и один раз с вызываемым компонентом. В обоих сценариях производительность с вызываемым компонентом занимала примерно в 2,2 раза больше времени для выполнения запроса, чем когда компонент не вызывался. Мы думали, что это не очень дорого, учитывая объем обработки, которую мы выполняли, и количество поездок в базу данных для обновления данных. Кроме того, поскольку соотношение 2,2x казалось согласованным как в сценарии, где мы подключаем к серверу 4 одновременных подключения, так и при подключении к серверу 20 одновременных подключений, похоже, он работает нормально.
Тесты с 20 экземплярами, безусловно, создают большую нагрузку на наш сервер разработки как с новым компонентом, так и без него, но новый компонент, похоже, достаточно хорошо справляется со стрессом. Тем не менее, я хочу убедиться, что я поступил правильно, и не указываю на положительный результат слабого теста, чтобы доказать, что мой компонент не приведет сервер к нуждам при пиковой нагрузке.