Для всех, кто интересуется, я написал инструмент 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 просто анализирует файлы конфигурации, устанавливает поток менеджера для каждой транзакции, который сам заботится о настройке и запуске потоков исполнителя в соответствии с конфигурацией. Менеджеры позаботятся о линейном добавлении исполнителей, чтобы не перегружать их полностью.
Когда он запускается, он просто сообщает каждую секунду, сколько рабочих в каждой транзакции запущено и на какой стадии она находится.
Это был забавный маленький уик-энд-проект, он, конечно, не загружает бегунов, и я уверен, что в нем есть некоторые серьезные недостатки, о которых я в настоящее время блаженно не подозреваю, но, похоже, все в порядке.
Итак, в общем, ответ здесь был "катать себя".