模拟设备并发,场景中大部分虚拟设备报错,请高手解答
本帖最后由 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,可问题还是存在。麻烦哪位路过大神帮忙解惑,不胜感激
我自己开始认为是返回超时,所以把连接返回的时间都设置成了600,可问题并没有解决。 日志图片
LR使用不多,猜测是否是只有1个用户使用了该socket连接 为什么只能1个用户使用呢 问题已经OK了,可以跑100个ip地址了。原来是我的mac地址没有采用唯一 1.脚本中参数化问题,每次打开似乎都默认为sequence了,但实际上很多情况下都用Unique,而且用Once就OK
2.每次场景的设置都要保存后再运行才能保证刚才的设置有效 :victory:
页:
[1]