Стресс-тестирование приложения командной строки

#perl #testing #load #stress-testing

#perl #тестирование #загрузка #стресс-тестирование

Вопрос:

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

В настоящее время я делаю что-то вроде этого:

 $ prog > output1.txt 2>err1.txt amp; 
  prog > output2.txt 2>err2.txt amp;
  . 
  .
  .
  .
  

и затем я проверяю ps, чтобы увидеть, какие экземпляры завершились, а какие нет. Доступно ли какое-либо приложение с открытым исходным кодом, которое может автоматизировать этот процесс? Предпочтительно с веб-интерфейсом?

Ответ №1:

Вы можете использовать xargs для параллельного выполнения команд:

 seq 1 100 | xargs -n 1 -P 0 -I{} sh -c 'prog > output{}.txt 2>err{}.txt'
  

Это приведет к параллельному запуску 100 экземпляров.

Для лучшей среды тестирования (включая параллельное тестирование с помощью ‘spawn’) взгляните на Expect .

Ответ №2:

При параллельном использовании GNU это приведет к запуску одной программы на ядро процессора:

 seq 1 1000 | parallel prog > output{}.txt 2>err{}.txt
  

Если вы хотите запустить 10 программ на ядро процессора, выполните:

 seq 1 1000 | parallel -j1000% prog > output{}.txt 2>err{}.txt
  

Посмотрите вступительное видео, чтобы узнать больше: http://www.youtube.com/watch?v=OpaiGYxkSuQ

Ответ №3:

Почему бы не использовать crontab или Запланированные задачи для автоматического запуска скрипта?

Вы могли бы написать что-нибудь, чтобы легко автоматически анализировать выходные данные.