modtest 发表于 2016-2-24 12:30:14

模拟设备并发,场景中大部分虚拟设备报错,请高手解答

本帖最后由 modtest 于 2016-2-24 12:41 编辑

本人loadrunner新手,目前测试的项目是用socket录制的。项目架构是:web 服务+通信服务gateway+mysql 数据库服务这种方式。设备采用socket方式与通信服务通信。目前主要要测试的部分就是多个设备并发,检测设备与通信服务,通信服务与数据库之间的交互的问题。
   用loadrunner来模拟设备。
   录制的脚本:
          int cycle = 100;
                int i;
      lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.16.8:5002", LrsLastArg);

      lr_think_time(4);


      lr_start_transaction("login");   //开始login事物

                lrs_send("socket0", "buf0", LrsLastArg);

                lrs_receive("socket0", "buf1", LrsLastArg);

      lr_end_transaction("login", LR_AUTO);    //结束login事物



      for (i = 0; i < cycle; i++) {
      lr_start_transaction("发送心跳包");   //开始发送心跳包事物
                lr_think_time(5);

                lrs_send("socket0", "buf2", LrsLastArg);

                lrs_receive("socket0", "buf3", LrsLastArg);

      lr_end_transaction("发送心跳包", LR_AUTO);    //结束发送心跳包事

      lrs_close_socket("socket0");
      lrs_cleanup();



data.dw为:

;WSRData 2 1

sendbuf0 81
      "\x00\x00\x00"
      "Q"
      "\x00\x00\x00\x00\x00\x00\x00\x00"
      "<MACaddresses>"
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
      "<MACaddresses>"
      "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00"
      "\x00"

recvbuf1 64
      "\x00\x01\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
      "d"
      "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
      "d"
      "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
      "d"
      "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"

sendbuf2 19
      "\x00\x02\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00"
      "d"
      "\x80\xff\xff\xff\x00\x00"

recvbuf3 20
      "\x00\x03\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
      "\x05"


-1

单个脚本运行可以通过。但是采用场景,虚拟用户100个时,只有1个或2个可以pass,其他都失败。
错误日志多为:
Start auto log messages stack - Iteration 1.
Action.c(33): callSend: Wed Feb 24 11:28:55.453: reading buffer buf2
Action.c(33): callSend: Wed Feb 24 11:28:55.453: calling parameterization routines
Action.c(33): callSend: Wed Feb 24 11:28:55.453: translate buffer to binary
Action.c(33): callSend: Wed Feb 24 11:28:55.453: Translate data for printing
=================================SENT BUFFER=================================
      "\x00\x02\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00"
      "d"
      "\x80\xff\xff\xff\x00\x00"

===============================================================================
Action.c(33): callSend: Wed Feb 24 11:28:55.453: About to send 19 bytes to socket0 (2668)
Action.c(33): callSend: Wed Feb 24 11:28:55.453: Waiting for writable socket 10 secs, 0 usecs
Action.c(33): Error : Internal "select" error while trying to socket0. Error code : 9018.
End auto log messages stack.

Start auto log messages stack - Iteration 1.
Action.c(33): Continuing after error in Vuser script.
Action.c(35): lrs_receive(socket0, buf3)
Action.c(35): fiInitRecv: socket: socket0 (2668), buffer: buf3, expected size: 20
Action.c(35): callRecv: Wed Feb 24 11:28:55.453: About to read 20 bytes from socket0 (2668)
Action.c(35): fiPerformReceive: Wed Feb 24 11:28:55.453: Waiting for readable socket 10 secs, 0 usecs
Action.c(35): Error : Internal "select" error while trying to socket0. Error code : 9018.
End auto log messages stack.
Start auto log messages stack - Iteration 1.
Action.c(35): Continuing after error in Vuser script.
Action.c(37): Notify: Transaction "发送心跳包" ended with "Fail" status (Duration: 5.0012 Think Time: 5.0000).
Action.c(42): lrs_close_socket(socket0)
Action.c(42): callCloseSocket: socket: socket0 (2668)
Action.c(42): Error : socket0 - Successful WSAStartup not yet performed. Error code : 10093.
End auto log messages stack.

Start auto log messages stack - Iteration 1.
Action.c(42): Continuing after error in Vuser script.
Action.c(43): lrs_cleanup()
Action.c(43): Error :- Successful WSAStartup not yet performed. Error code : 10093.
End auto log messages stack.

本人开始认为是返回超时,所以把返回超时时间都设置成了600s,可问题还是存在。麻烦哪位路过大神帮忙解惑,不胜感激

modtest 发表于 2016-2-24 12:31:43

我自己开始认为是返回超时,所以把连接返回的时间都设置成了600,可问题并没有解决。

modtest 发表于 2016-2-24 13:02:36

日志图片

suyilin1985 发表于 2016-2-24 14:06:52

LR使用不多,猜测是否是只有1个用户使用了该socket连接

modtest 发表于 2016-2-24 15:54:51

为什么只能1个用户使用呢

modtest 发表于 2016-2-24 16:28:27

问题已经OK了,可以跑100个ip地址了。原来是我的mac地址没有采用唯一

modtest 发表于 2016-2-24 16:40:58

1.脚本中参数化问题,每次打开似乎都默认为sequence了,但实际上很多情况下都用Unique,而且用Once就OK
2.每次场景的设置都要保存后再运行才能保证刚才的设置有效

jingzizx 发表于 2016-2-25 10:12:26

:victory:
页: [1]
查看完整版本: 模拟设备并发,场景中大部分虚拟设备报错,请高手解答