#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 или Запланированные задачи для автоматического запуска скрипта?
Вы могли бы написать что-нибудь, чтобы легко автоматически анализировать выходные данные.