在场景中运行时的一些奇怪现象
一、关于超时的问题1、100个用户时,最大在线用户数也是98,报错:
Action.c(212): Error : save param parameter is invalid. Error code : 9005.
2、300个用户时,最大在线用户数是163,报错:
Action.c(212): Error : save param parameter is invalid. Error code : 9005.
vuser_init.c(13): Error : Timeout expired while trying to connect. Error code : 9017.
3、500个用户时,最大在线用户数也是163,报错:
Action.c(212): Error : save param parameter is invalid. Error code : 9005.
vuser_init.c(13): Error : Timeout expired while trying to connect. Error code : 9017.
Action.c(8): Error : socket0 - Connection reset by peer. Error code : 10054.
其中,300和500个用户时,有个现象,场景才开始运行时,就一直报 超时的(9017)的错,没有PASS的事物,根本就没有RUN起来,直接从就绪状态到FAILED,但是FAILED一定数目的用户后,接下来的运行比较正常,为什么不是在运行了一部分用户后再出现后面的用户连接超时?而是出现在一开始就超时(都没有用户占用资源还超时,有用户运行起来了占用了资源反而后来的用户登录不超时了),另外说明一下
100个用户时没有这种现象。
二、关于持续运行时间的问题
明明设置了运行时间是30分钟,但是,实际相差太大,实际运行的时间只有几分钟,这可能是什么原因导致没有持续运行设定的时间长度? 看上去的感觉是连接超时导致关联失败,代码是什么?什么协议,什么平台? 本帖最后由 ytcaicai 于 2012-4-19 16:54 编辑
代码:
vuser_init()
{
int c=0;
//c=lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=172.31.254.240:9890", LrsLastArg);
c=lrs_create_socket("socket0", "TCP", "RemoteHost=172.31.254.240:9890", LrsLastArg);
if (c==0)
lr_output_message("Socket was sucessfully created");
else
lr_output_message("An error occureed while creatting the socket,error code:%d",c);
return 0;
}
Action()
{
lr_think_time(7);
lrs_send("socket0", "buf0", LrsLastArg);
lrs_receive("socket0", "buf1", LrsLastArg);
....
lrs_send("socket0", "buf94", LrsLastArg);
lrs_receive("socket0", "buf95", LrsLastArg);
lr_think_time(12);
lr_start_transaction("search");
lrs_send("socket0", "buf96", LrsLastArg);
lrs_receive("socket0", "buf97","Flags= MSG_PEEK", LrsLastArg);
lrs_save_param("socket0",NULL,"s_count",0,4);
if (strcmp(lr_eval_string("<s_count>"),"60№")==0)
lr_end_transaction("search", LR_PASS);
else
lr_end_transaction("search", LR_FAIL);
lrs_send("socket0", "buf98", LrsLastArg);
lrs_receive("socket0", "buf99", LrsLastArg);
.....
return 0;
}
协议:windows sockets andoracle(2-tier)
PB开发的c/s/s结构的程序
对应的测试报告:http://bbs.51testing.com/thread-547806-1-3.html 按常规推理,应该是一部分用户连接上了,占用了系统资源,后面的用户再连接时连接超时才是;
可现在是相反了,一开始就先倒下一批用户(连接超时),后来的用户都能正常连接上;
为了确认这不是偶然现象,我测试了6,7次,
但同样的代码和设置,100个用户是没有上面说的这种现象,但是300或500个用户时就出现这种现象。 :) 不要沉了。。。
此帖与 http://bbs.51testing.com/thread-547806-1-3.html 是相关联的 然后Error : socket0 - Connection reset by peer. Error code : 10054
和负载机器的TCP设置有关的。
是不是说负载机的TCP设置好了就不会有这个ERROR?请问楼上的元老能否讲的具体些?
另外,这个测试的报告在http://bbs.51testing.com/thread-547806-1-3.html中,可以综合来分析 刚也碰到这个问题了,也找到了原因分享一下。
====================
我用的关联函数lrs_save_param("socket9", NULL,"flag",3190,40),报出了楼主的错,原因是,正在测试的系统进行了其他操作,导致当前交易不成功,我原来保存在socket9中的字节应该为7000+,在当前情况下,只收到了2000+,而我的偏移量设置为3190,很显然会报错。
====================================
我觉得楼主的应该也类似,lrs_save_param("socket0",NULL,"s_count",0,4);,socket0中肯定没有收到4字节的数据,所以报lrs_save_param的参数有误。 回复 9# Katero
请问Katero:
遇上这个问题,你是怎么解决的呢?难不成还得引入类似线程控制的机制,保证操作的独立性?还有,如果设置了50个用户在线程机制下跑脚本,那么会不会是50个线程对这一份脚本进行执行,必然会导致读和写操作的冲突呢? 回复 9# Katero
请问Katero:
遇上这个问题,你是怎么解决的呢?难不成还得引入类似线程控制的机制,保证操作的独立性?还有,如果设置了50个用户在线程机制下跑脚本,那么会不会是50个线程对这一份脚本进行执行,必然会导致读和写操作的冲突呢?
页:
[1]