Не вставляйте функции или переменные JMeter в сценарии.
Попробуйте использовать переменные JMeter в своих скриптах следующим образом:
String addrress1= vars.get("AdID1");
String memberAddress1= vars.get("MAdID1");
Рекомендуется использовать Тестовые элементы JSR223 и Groovy Language , а не BeanShell.
Существует действительно несколько опций:
В функции для генерации таблицы заставьте его сохранить результат в файл на диске:
/cache/groups/1.txt
/cache/groups/2.txt
Необходимо не обязательно выполнить еженедельное пакетное задание для него при вызывании функции, чтобы получить данные, проверить, устарел ли кэш (или не существует). Если так, генерируйте и кэшируйте результаты затем. В противном случае просто возвратите кэшируемый файл.
function getGroupTable($groupId) {
if (cacheIsStale($groupId)) {
generateCache($groupId);
}
return file_get_contents($cacheFile);
}
cacheIsStale()
функция могла просто посмотреть на метки времени файла для тестирования на свежесть.
Кажется, что у Вас уже есть большая часть из покрытого.
Еще одна опция, принимая данные таблицы не огромна, должен использовать кэш-память для кэширования результатов - это, вероятно, было бы более быстрым решением, хотя необходимо будет проверить требования к памяти видеть, является ли это жизнеспособный вариант.
в первую очередь, профиль. проверьте, что те запросы действительно используют существенное количество времени. возможно, кэши результата запроса MySQL уже сделали работу для Вас.
если бы они действительно используют ресурсы, что я сделал бы, должен составить таблицу с вычисленными результатами и процедуру, которые делают все необходимое управление, чтобы быть названными, когда данные изменяются. те частые чтения должны перейти только к предварительно вычисленным данным, не потрудившись проверять, допустимо ли это все еще.
просто добавьте некоторые рычаги к процедурам, которые изменяют базовые данные или триггеры базы данных, если бы Вы можете, они нечасто выполнялись бы (еженедельно?), и мог занять много времени для генерации любых результатов.