ytcaicai 发表于 2012-4-17 17:31:02

在场景中运行时的一些奇怪现象

一、关于超时的问题
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分钟,但是,实际相差太大,实际运行的时间只有几分钟,这可能是什么原因导致没有持续运行设定的时间长度?

云层 发表于 2012-4-17 18:10:33

看上去的感觉是连接超时导致关联失败,代码是什么?什么协议,什么平台?

ytcaicai 发表于 2012-4-18 08:32:10

本帖最后由 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

ytcaicai 发表于 2012-4-18 08:57:29

按常规推理,应该是一部分用户连接上了,占用了系统资源,后面的用户再连接时连接超时才是;
可现在是相反了,一开始就先倒下一批用户(连接超时),后来的用户都能正常连接上;
为了确认这不是偶然现象,我测试了6,7次,

但同样的代码和设置,100个用户是没有上面说的这种现象,但是300或500个用户时就出现这种现象。

ytcaicai 发表于 2012-4-18 12:49:16

:)

ytcaicai 发表于 2012-4-18 16:04:17

不要沉了。。。
此帖与 http://bbs.51testing.com/thread-547806-1-3.html 是相关联的

ytcaicai 发表于 2012-4-19 08:25:53

然后Error : socket0 - Connection reset by peer. Error code : 10054
和负载机器的TCP设置有关的。

是不是说负载机的TCP设置好了就不会有这个ERROR?请问楼上的元老能否讲的具体些?
另外,这个测试的报告在http://bbs.51testing.com/thread-547806-1-3.html中,可以综合来分析

Katero 发表于 2012-7-5 14:34:48

刚也碰到这个问题了,也找到了原因分享一下。
====================
我用的关联函数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的参数有误。

lxgx198466 发表于 2012-8-8 16:44:33

回复 9# Katero


    请问Katero:

遇上这个问题,你是怎么解决的呢?难不成还得引入类似线程控制的机制,保证操作的独立性?还有,如果设置了50个用户在线程机制下跑脚本,那么会不会是50个线程对这一份脚本进行执行,必然会导致读和写操作的冲突呢?

lxgx198466 发表于 2012-8-8 16:44:42

回复 9# Katero


    请问Katero:

遇上这个问题,你是怎么解决的呢?难不成还得引入类似线程控制的机制,保证操作的独立性?还有,如果设置了50个用户在线程机制下跑脚本,那么会不会是50个线程对这一份脚本进行执行,必然会导致读和写操作的冲突呢?
页: [1]
查看完整版本: 在场景中运行时的一些奇怪现象