Loadrunner Mdrv.exe
#1
Отправлено 07 сентября 2007 - 13:54
Несколько месяцев назад я написал приложение для мониторинга Citrix приложения. Для сбора данных использовал LoadRunner точнее mdrv.exe вызвваемого из batch следующим образом:
D:\LoadRunner\bin\mdrv.exe -usr D:\test.usr -out D:\testlogs\-vugen_win 0
Ниже приведу пример времени ответов для одной транзакции:
5,31057
5,310176
5,310394
5,5078
5,310396
5,310205
5,310295
5,310749
5,311049
5,430626
6,311809
5,330365
6,311877
5,310679
5,310309
5,310353
5,310537
9,316064
5,305545
5,310425
5,310447
6,311752
5,310495
Выглядит крайне подозрительно т.к. в принципе есть в 5,31 и 6,31 секунды как время ответа. При этом если запускаю тот же скрипт в VuGen значения выглидять более реально.
Может быть кто-то сталкивалься с подобным вопросом?
#2
Отправлено 08 сентября 2007 - 01:45
#3
Отправлено 09 сентября 2007 - 11:57
Artur, 2 вопроса:Добрый день всем.
Несколько месяцев назад я написал приложение для мониторинга Citrix приложения. Для сбора данных использовал LoadRunner точнее mdrv.exe вызвваемого из batch следующим образом:
Какая версия LoadRunner используется?
Используются ли в скрипте функции ctrx_sync_on_bitmap?
#4
Отправлено 20 сентября 2007 - 09:05
Artur, 2 вопроса:
Какая версия LoadRunner используется?
8.1 FP4
да, для синхронизацииИспользуются ли в скрипте функции ctrx_sync_on_bitmap?
#5
Отправлено 20 сентября 2007 - 12:35
Кусок скрипта с транзакцией хотелось бы увидеть. Заодно неплохо было бы понять что значит "более реально". Намного больше? Намного меньше? Скрипт в VuGen и через mdrv.exe запускается с одной и той же машины?
Теперь я знаю почему в VUgen and dmrv.exe время выглядит по-разному.
http://kb-web.mercur...3384;Product=LR
Дело в том, что VUgen включает wasted_time, a mdrv - нет.
Вопрос для меня остается в том, почему значения времени в mdrv настолько дискретны? т.е. если округлить значения до второго знака, то результирующие значения выглядят след. образом:
5,31
5,33
6,31
4,31
и тд. Закономерность видна на лицо. Но никак не могу понять в чем дело
Кусок скрипта:
...навигация к месту где открывается документ
startTrans("01_TLC_CTRDOK_02_CA"); //Модифицированная lr_start_transaction
ctrx_type(" ",CTRX_LAST);//тут нажатие пробел и инициирование открытия документа
ctrx_sync_on_bitmap(31, 179, 16, 12, "f17ab25aadbca37af9920a0b6e82e848", CTRX_LAST); //синхронизация
endTrans("01_TLC_CTRDOK_02_CA"); // Модифицированная функция для записи времени в опредиленный логфайл
void startTrans(char *transname)
{
iTranCount=iTranCount+1;
itoa(iTranCount,cTranCount,10);
strcat(cTranCount,"_");
strcat(cTranCount, lr_eval_string(transname));
transname=cTranCount;
lr_continue_on_error(1);
lr_start_transaction( cTranCount);
}
void endTrans(char *transname)
{
itoa(iTranCount,cTranCount,10);
strcat(cTranCount,"_");
strcat(cTranCount, lr_eval_string(transname));
transname=cTranCount;
//lr_output_message({Time});
if ((file = fopen(filename, "a" )) == NULL)
{
lr_output_message("Unable to create %s", filename);
}
if ((filecsv = fopen(filenamecsv, "a" )) == NULL)
{
lr_output_message("Unable to create %s", filenamecsv);
}
if (lr_get_transaction_status( lr_eval_string(transname)) == LR_PASS)
{
char message[1024];
char messagecsv[1024];
char suffix[1024];
char qsuffix[1024];
messagecsv[0] = '\';
message[0] = '\';
suffix[0] = '\';
qsuffix[0] = '\';
transtime = lr_get_transaction_duration(lr_eval_string(transname));
strcat(message, lr_eval_string( "<trans><name>"));
strcat(message, lr_eval_string( transname));
strcat(message,"</name><starttime>");
sprintf (qsuffix, "%s</starttime>",lr_eval_string("{Time}"));
sprintf (suffix, "<duration>%f</duration></trans>\n", transtime);
strcat(message, qsuffix);
strcat(message, suffix);
sprintf(messagecsv, "%s,%s,%f\n",lr_eval_string( transname),lr_eval_string("{Time}"),transtime);
fwrite(message, strlen(message), 1, file);
fwrite(messagecsv, strlen(messagecsv), 1, filecsv);
lr_end_transaction(lr_eval_string(transname),LR_AUTO);
}
else
{
char message[1024];
char messagecsv[1024];
char suffix[1024];
char qsuffix[1024];
messagecsv[0] = '\';
message[0] = '\';
suffix[0] = '\';
qsuffix[0] = '\';
strcat(message, "<trans><name>");
strcat(message, lr_eval_string( transname));
strcat(message,"</name><starttime>");
sprintf (qsuffix, "%s</starttime>",lr_eval_string("{Time}"));
sprintf (suffix, "<duration>-1</duration></trans>\n");
strcat(message, qsuffix);
strcat(message, suffix);
sprintf(messagecsv, "%s,%s,-1\n",lr_eval_string( transname),lr_eval_string("{Time}"));
fwrite(message, strlen(message), 1, file);
fwrite(messagecsv, strlen(messagecsv), 1, filecsv);
lr_end_transaction(lr_eval_string(transname), LR_FAIL);
lr_exit(LR_EXIT_MAIN_ITERATION_AND_CONTINUE, LR_AUTO);
}
fclose(file);
fclose(filecsv);
lr_continue_on_error(3);
}
#6
Отправлено 20 сентября 2007 - 13:19
Artur, 2 вопроса:
Какая версия LoadRunner используется?
8.1 FP4да, для синхронизацииИспользуются ли в скрипте функции ctrx_sync_on_bitmap?
Так и думал. В 8.1 FP4 есть проблема при вычислении времени выполнения Citrix-скриптов в которых используется функция ctrx_sync_on_bitmap.
Собственно, варианта 2:
- связаться с кастомер-саппорт и обсудить с ними, как можно решить эту проблему
- переписать скрипт без использования ctrx_sync_on_bitmap()
#7
Отправлено 20 сентября 2007 - 18:39
А что за закономерность то? Разброс в пределах 2 секунд. Что не так?Вопрос для меня остается в том, почему значения времени в mdrv настолько дискретны? т.е. если округлить значения до второго знака, то результирующие значения выглядят след. образом:
5,31
5,33
6,31
4,31
и тд. Закономерность видна на лицо. Но никак не могу понять в чем дело
#8
Отправлено 21 сентября 2007 - 06:37
А что за закономерность то? Разброс в пределах 2 секунд. Что не так?Вопрос для меня остается в том, почему значения времени в mdrv настолько дискретны? т.е. если округлить значения до второго знака, то результирующие значения выглядят след. образом:
5,31
5,33
6,31
4,31
и тд. Закономерность видна на лицо. Но никак не могу понять в чем дело
закономерность в том, что имея около 100000 итераций всего около 100 значений времени. Проще говоря если взять кубик для игры в кости и бросать его 100 раз. При этом выпадают ТОЛЬКО значения, скажем, 2 и 4. Понятно что с кубиком не все в порядке :)
#9
Отправлено 21 сентября 2007 - 06:38
Artur, 2 вопроса:
Какая версия LoadRunner используется?
8.1 FP4да, для синхронизацииИспользуются ли в скрипте функции ctrx_sync_on_bitmap?
Так и думал. В 8.1 FP4 есть проблема при вычислении времени выполнения Citrix-скриптов в которых используется функция ctrx_sync_on_bitmap.
Собственно, варианта 2:
- связаться с кастомер-саппорт и обсудить с ними, как можно решить эту проблему
- переписать скрипт без использования ctrx_sync_on_bitmap()
спасибо, попробую!
#10
Отправлено 22 сентября 2007 - 05:25
Странная ассоциация. Что выпадает на кубике это абсолютно случайный процесс. Вы же в скрипте, насколько я понимаю, замеряете транзакцию какой-то работающей системы. И эта транзакция, наверное, все-таки не должна занимать каждый раз какое-то абсолютно случайное время.закономерность в том, что имея около 100000 итераций всего около 100 значений времени. Проще говоря если взять кубик для игры в кости и бросать его 100 раз. При этом выпадают ТОЛЬКО значения, скажем, 2 и 4. Понятно что с кубиком не все в порядке :)
#11
Отправлено 22 сентября 2007 - 15:17
Дмитрий,Странная ассоциация. Что выпадает на кубике это абсолютно случайный процесс. Вы же в скрипте, насколько я понимаю, замеряете транзакцию какой-то работающей системы. И эта транзакция, наверное, все-таки не должна занимать каждый раз какое-то абсолютно случайное время.закономерность в том, что имея около 100000 итераций всего около 100 значений времени. Проще говоря если взять кубик для игры в кости и бросать его 100 раз. При этом выпадают ТОЛЬКО значения, скажем, 2 и 4. Понятно что с кубиком не все в порядке :)
Времена транзакций генерируются с шагом примерно в 1 секунду - и это будет верно для любого окружения.
В данном случае наиучшим решением будет переписать скрипт без ctrx_sync_on_bitmap() - проблема возникает только в случае ее использования - или узнать у кастомер саппорт что они предложат сделать в этой ситуации.
#12
Отправлено 22 октября 2007 - 09:39
В LR 8.1 ошибка в протоколе Цитрикс. Прислали патч. И действительно - помогло. Только время Логин увеличилось в 5 раз. Трагично конечно. Жалко что у меня так и не появилось время переписать скрипт без использования ctrx_sync_on_bitmap().
#13
Отправлено 22 октября 2007 - 09:55
Переписать было бы быстрее, конечно. :)
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных