История о том, как мы тестировали Reporting Services. Часть 1

Back

В ходе работы над одним из крупных проектов перед нами встала задача провести нагрузочное тестирование отчетов, реализованных в Reporting Services (SSRS). Требования ставились довольно серьезные:

  • отчет не должен падать при 3000 одновременных запросов к нему;
  • отчет должен выдать результат не более чем за минуту.

Ну что ж, раз есть задача, значит нужно работать.
В этой статье мы хотим описать наш опыт нагрузочного тестирования Reporting Services. Может кому-нибудь он будет полезен.

Итак, шаг первый. Стандартные средства Microsoft.

Первые трудности возникли уже в момент постановки задачи. Заказчик максимально упирает на то, чтобы тестирование проводилось средствами компании Microsoft. Не будем вдаваться в подробности почему и как так вышло, но факт есть факт. Из стандартных средств Microsoft нам известна лишь одна из утилит, которая может нам хоть как то помочь, - это Visual Studio.

Попытка №1. Тестирование через Visual Studio.
Предисловием хочется указать на 2 лицензионных ограничения для тестирования через Visual Studio:
1) Для тестирования проектов необходима максимальная версия Visual Studio, т.е. версия Ultimate.
2) Если у вас триальная версия этой студии, то больше 250 одновременных тестов вы не запустите.

А так же есть ограничение, связанное с мощностью станции, с которой вы проводите тестирование. На наших машинах мы не смогли запустить более 1000-1500 одновременных тестов. Проявляется это в том, что студия при подготовке тестов падает и выдает сообщение Test Aborted. Ни в одном из логов при этом не появляется ошибок.

Как создать тест веб-сайта при помощи Visual Studio описано на многих сайтах, поэтому не будем вдаваться в эти дебри. Дам лишь ссылку на документацию, где всё описано очень подробно: 
https://msdn.microsoft.com/Library/vs/alm/Test/performance-testing/run-performance-tests-app-before-release
В этой же статье мы опишем лишь проблемы, с которыми столкнулись при тестировании.

Проблема №1.
При тестировании отчета формируется HTTP страница, которая и тестируется. При этом данные в отчет не прогружаются. Связано это с тем, что SSRS отчеты загружают данные при помощи AJAX(Asynchronous JavaScript and XML) скриптов.
Чтобы корректно выполнить тестирование нужно каким-то образом получить http-запросы, которые формируются ajax-скриптами и запускать эти http-запросы в параллель с основной страницей из проекта тестирования.
Как это сделать в Visual Studio мы так и не смогли понять. Возможно, если бы время не поджимало и у нас был хотя бы месяц на исследования в данной области, мы бы нашли решение. А пока решили перейти к другим путям тестирования.

Проблема №2.
Одновременно от одного пользователя запускается только 20 отчетов. Все остальные отчеты валятся с ошибкой 403. Покурив мануалы по Reporting Services мы так и не нашли упоминания того, что у него есть хоть какое-то ограничение на одновременное количествово запусков отчетов.
Углубившись в проблему, мы всё же нашли ограничение, вшитое в настройки ssrs. И вот статья, посвященная этому вопросу:
http://www.powerobjects.com/2012/10/10/ssrs-error-exceeded-maximum-allowed-requests/
Если вкратце, то решается она правкой параметра MaxActiveReqForOneUser в файле с настройками ssrs (C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer\RSReportServer.config)

Проблема №3.
Как я уже упоминал, мы не смогли запустить больше 1500 тестов с одной машины. На сколько мы смогли понять, проблема в том, что запускается 32-битный агент тестирования (QTAgent32_40) вместо 64-битного аналога. Как подружить 64-битный агент со студией мы так и не поняли. При изменении настроек на 64 бита проект падает и отказывается работать.

Продолжение следует...

 

Владимир Куркович
 

Спасибо за проявленный интерес! Интересующие материалы придут вам на указанную почту в течение одного рабочего дня.

Поздравляем, ваша регистрация успешно пройдена!