Мне нужно протестировать производительность / нагрузку кучей взаимозависимых сервисов. Все они используют net.tcp и большинство используют дуплексные контракты и внутренние очереди. [управляемый класс очереди POCO с использованием блокировки (syncRoot) {if (queue.Empty) Thread.Wait (); }] * * Тысяча одна
Вот подход, который я придумал:
- Определение служб WCF для тестирования производительности
- Определите соответствующие счетчики производительности для каждой из услуг
- Определите логическую начальную точку, которая будет выполнять выполнение через тестируемые сервисы
- Автогенерация модульных тестов с использованием VS.Net для каждой из служб
- Написание конкретных функциональных тестов (например, я могу взять пример использования - «Разместить заказ» - и написать тесты, которые выполняют все вызовы к соответствующим службам и, как правило, выполняют практически все необходимые функции)
- Используйте файлы трассировки из # 5 для генерации модульных тестов [с использованием нагрузочного теста WCF из CodePlex] (мне как-то кажется, что это идеальный инструмент для воссоздания пользовательских ошибок в рабочей среде / поле в среде отладки. Отказ от ответственности: инструмент. Впечатления от прочтения проекта desc)
- Тесты, приведенные выше, можно настроить для выполнения вызовов с автоматически сгенерированными входными данными
- Ввести варианты ввода, чтобы различные пути кода были учтены
- Регистрация данных от счетчиков производительности
- Анализ и выявление узких мест
Вопросы:
- Есть ли лучший подход?
- В случае служб, использующих внутренние очереди, измерение производительности с использованием стандартных счетчиков производительности является проблемой. Может мне понадобятся нестандартные счетчики?
- Если # 1 верно, есть ли способ ввести счетчики клиентов без изменения кода тестируемых сервисов?
- Должен ли я заботиться о результатах моих функциональных тестов?
- Есть ли способ [ненавязчиво] внедрить SLA для служб WCF? (Я думаю, что если у меня достаточно данных с моих счетчиков, таких как обслуживаемые запросы, возникшие исключения, время ответа и т. Д., Я смогу проверить мой SLA - обработать 200 000 запросов в течение 5 минут с временем ответа 2 секунды для каждого запроса - против этих цифр. Мой вопрос, возможно, заключается в том, могу ли я просто указать свой SLA, а продукт / инструмент может выполнить всю сантехнику за сценой и получить мне табличный ответ? Я знаю ... Я знаю ... Я мечтал день :))
- В сторону: Каков наилучший метод для внутренней очереди запросов в службе WCF?