Как я могу проверить производительность, используя сценарии оболочки - инструменты и методы? - PullRequest
1 голос
/ 29 января 2010

У меня есть система, к которой я должен применить нагрузку для тестирования производительности. Часть загрузки может быть создана через LoadRunner по HTTP.

Однако, чтобы создать реалистичную нагрузку для системы, мне также нужно смоделировать пользователей, используя инструмент командной строки, который использует не HTTP-протокол * для общения с сервером.

* edit : на самом деле это HTTP, но вендор сообщил нам, что записать, записать и воспроизвести что-то нелегкое. Поэтому мы вынуждены вызывать его с помощью инструмента CLI.

У меня есть ограничение на отсутствие лицензий на LoadRunner для этого и нехватка времени для того, чтобы получить лицензию.

Поэтому мне было интересно, есть ли инструмент, который я мог бы использовать для управления одновременным выполнением набора сценариев оболочки (он должен работать в Solaris), который будет моей транзакцией. В идеале он мог бы нарастить в соответствии с заранее установленным расписанием.

Я осмотрелся и не могу сказать, подойдет ли JMeter. Кажется, он очень ориентирован на Интернет.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2010

Для всех, кто интересуется, я написал инструмент Java для управления этим для меня. Он ссылается на несколько файлов, чтобы контролировать его работу:

1) Файл расписаний - определяет различные именованные списки времени, которые контролируют продолжительность последовательных фаз.

например. MAIN,120,120,120,120,120

Это приведет к расписанию с именем MAIN, которое будет иметь 5 фаз каждые 120 секунд.

2) Файл транзакций - определяет транзакции, которые необходимо запустить. Каждая транзакция имеет имя, команду, которая должна вызываться, логическое управление повторениями, целочисленное управление паузой между повторениями в секундах, ссылку на файл данных, расписание использования и приращения.

например. Trans1,/path/to/trans1.ksh,true,10,trans1.data.csv,MAIN,0,10,0,10,0

Это приведет к транзакции, выполняющей trans1.ksh, несколько раз с паузой в 10 секунд между повторениями. Он будет ссылаться на данные в trans1.data.csv. Во время фазы 1 будет увеличено количество параллельных вызовов на 0, в фазе 2 будет добавлено 10 параллельных вызовов, фаза 3 не добавлена ​​и так далее. Время фазы берется из расписания с именем MAIN.

3) Файлы данных - как указано в файле транзакции, это будет CSV с заголовком. Каждая строка данных будет передана для последующих вызовов транзакции.

, например

HOSTNAME,USERNAME,PASSWORD
server1,jimmy,password123
server1,rodney,ILoveHorses

Они передаются в сценарии транзакции через переменные окружения (например, PASSWORD=ILoveHorses), немного клунко, но выполнимо.

Моя Java просто анализирует файлы конфигурации, устанавливает поток менеджера для каждой транзакции, который сам заботится о настройке и запуске потоков исполнителя в соответствии с конфигурацией. Менеджеры позаботятся о линейном добавлении исполнителей, чтобы не перегружать их полностью.

Когда он запускается, он просто сообщает каждую секунду, сколько рабочих в каждой транзакции запущено и на какой стадии она находится.

Это был забавный маленький уик-энд-проект, он, конечно, не загружает бегунов, и я уверен, что в нем есть некоторые серьезные недостатки, о которых я в настоящее время блаженно не подозреваю, но, похоже, все в порядке.

Итак, в общем, ответ здесь был "катать себя".

0 голосов
/ 29 января 2010

Если все, что вам нужно, это запускать несколько сценариев оболочки параллельно, вы можете быстро создать что-то свое в perl с помощью fork, exec и sleep.

#!/usr/bin/perl

for $i (1..1000)
{   
    if (fork == 0)
    {
        exec ("script.sh");
        exit;
    }

    sleep 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...