Нагрузочное тестирование многокомпонентной системы
#1
Отправлено 17 июля 2012 - 13:37
Есть система, которая принимает телефонные звонки и позволяет операторам их обрабатывать.
Упрощенно система выглядит так: есть сервис телекоммуникаций с платой для приема звонков. Это отдельный сервер.
Далее есть сервер, на котором крутится служба для работы операторов. Это так же отдельная железяка.
И еще есть база данных.
Общение между всеми службами внутри системы сделано с помощью очереди MSMQ. То есть входящие звонки ставятся в очередь и операторы их берут себе по мере освобождения.
Оператор заполняет карточку звонка и тем самым дает еще нагрузку на БД.
Задача - узнать сколько рабочих мест операторов выдержит данный сервер.
Плату для приема звонков считаем заведомо стабильной и нагрузку договорились подавать в обход нее.
Есть утилита, которая позволяет эмулировать звонки на плату и думать, что идет сигнал с телефонной линии.
Вопрос у меня такой. Обычно, например web-сервер, нагружают с одной стороны смотрят как он работает под нагрузкой.
В данной же ситуации нагрузка идет звонками, а операторы их обрабатывают постепенно. То есть работа операторов тоже идет как переменная нагрузка на сервер и БД.
Как быть в данном случае?
Я пока нашел как нагружать входящими телефонными звонками, а что делать с работой операторов - не знаю.
#2
Отправлено 17 июля 2012 - 15:53
Коллеги, у меня вопрос по тестированию производительности. Профессионально до этого никогда не сталкивался, поэтому прощу помощи.
Есть система, которая принимает телефонные звонки и позволяет операторам их обрабатывать.
Упрощенно система выглядит так: есть сервис телекоммуникаций с платой для приема звонков. Это отдельный сервер.
Далее есть сервер, на котором крутится служба для работы операторов. Это так же отдельная железяка.
И еще есть база данных.
Общение между всеми службами внутри системы сделано с помощью очереди MSMQ. То есть входящие звонки ставятся в очередь и операторы их берут себе по мере освобождения.
Оператор заполняет карточку звонка и тем самым дает еще нагрузку на БД.
Задача - узнать сколько рабочих мест операторов выдержит данный сервер.
Плату для приема звонков считаем заведомо стабильной и нагрузку договорились подавать в обход нее.
Есть утилита, которая позволяет эмулировать звонки на плату и думать, что идет сигнал с телефонной линии.
Вопрос у меня такой. Обычно, например web-сервер, нагружают с одной стороны смотрят как он работает под нагрузкой.
В данной же ситуации нагрузка идет звонками, а операторы их обрабатывают постепенно. То есть работа операторов тоже идет как переменная нагрузка на сервер и БД.
Как быть в данном случае?
Я пока нашел как нагружать входящими телефонными звонками, а что делать с работой операторов - не знаю.
На мой взгляд в первую очередь здесь необходимо ответить на вопрос "Что значит узнать, сколько рабочих мест операторов выдержит данный сервер". Не указано при этом останется трафик таким же как сейчас или количество операторов будет увеличиваться пропорционально трафику?
Я бы на вашем месте принял за норму, что оператор в среднем обрабатывает N звонков в час. При этом часть операторов работает быстрее, часть медленнее, звони по своей сути тоже разные бывают, одни можно закрыть за минуту, другие - за 10 (это к учету при построении модели нагрузки).
Также второй фактор - это количество самих звонков, которое вероятнее всего больше N (т.к., очередь звонков имеется).
Таким образом вы можете выстроить модели нагрузки по принципу:
Имеется три (можно меньше, можно больше) возможных трафика входящих звонков: трафик1, трафик2, трафик3 (в количестве звонков в единицу времени). При этом независимо от трафика ваши операторы обрабатывают звонки с одинаковой скоростью.
Для каждого трафика путем увеличения количества операторов (виртуальных пользователей) вы можете и определить максимально возможное количество.
Т.е. у вас в данном примере будут три модели нагрузки с изменяющимся количеством виртуальных пользователей.
Задача эмулирования трафика звонков стоит немного отдельно и решается запуском соответствующей утилиты, например, перед началом теста.
Насчет того, как эмулировать работу операторов - это уже вопрос технический. ответ зависит от того, что за приложение используют операторы (web, desktop? Если desktop, то какая архитектура, какие технологии. На основании этой информации google в помощь в поиске подходящих инструментов).
#3
Отправлено 23 июля 2012 - 09:27
Спасибо за мысль. Занялся выяснением вопроса сколько звонков приходит в среднем за период времени.На мой взгляд в первую очередь здесь необходимо ответить на вопрос "Что значит узнать, сколько рабочих мест операторов выдержит данный сервер". Не указано при этом останется трафик таким же как сейчас или количество операторов будет увеличиваться пропорционально трафику?
Для меня этот вопрос звучит так - насколько выдержит железо?
То проверять работу под нагрузкой от двух параметров, так? Сначала замораживаем один параметр, меняем другой и смотрим на показатели работы. Потом немного меняем параметры и снова замеряем показатели.Я бы на вашем месте принял за норму, что оператор в среднем обрабатывает N звонков в час. При этом часть операторов работает быстрее, часть медленнее, звони по своей сути тоже разные бывают, одни можно закрыть за минуту, другие - за 10 (это к учету при построении модели нагрузки).
Также второй фактор - это количество самих звонков, которое вероятнее всего больше N (т.к., очередь звонков имеется).
Таким образом вы можете выстроить модели нагрузки по принципу:
...
Desktop - сейчас буду изучать, чем до нее можно достучаться.Задача эмулирования трафика звонков стоит немного отдельно и решается запуском соответствующей утилиты, например, перед началом теста.
Насчет того, как эмулировать работу операторов - это уже вопрос технический. ответ зависит от того, что за приложение используют операторы (web, desktop? Если desktop, то какая архитектура, какие технологии. На основании этой информации google в помощь в поиске подходящих инструментов).
С утилитой звонков тоже не просто - она графическая. Надо будет что-нибудь прикрутить для запуска.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных