另外2楼说“loadrunner关于socket的连接都是阻塞的”,这点我有些怀疑,参考loadrunner关于lrs_receive函数的说明
“The lrs_receive function reads the incoming data from a datagram or stream socket. If no incoming data is available at the socket, lrs_receive waits for data to arrive unless the socket is non-blocking. ”
从“unless the socket is non-blocking. ”这就句话,可以看出loadrunner可以在vuser的脚本中使用非阻塞的socket。
我是刚接触loadrunner的,很多关于loadrunner的问题要向大家请教,我多年的工作让我认识到不懂就要问,没觉得如果问的问题比较
肤浅就是信口开河,至于某些开发人员是否会笑,那更是无暇顾及的了。。作者: sunshinelius 时间: 2005-2-3 11:00
不管上层radius协议还是http协议,下层都是靠socket来支持实现的。你问的问题是基于socket的,至于上层千变万化的协议不用考虑。
如果radius client端通过一个端口向servr发送请求消息,那它只会创建一条socket连接通路,整个程序中只可能运行一条socket初始化语句。
但多个vuser是多个线程,每个线程都初始化了一个socket,一条初始化socket语句创建一个socket连接,这个没错吧。
另外
-----------------------------------
The lrs_receive function reads the incoming data from a datagram or stream socket. If no incoming data is available at the socket, lrs_receive waits for data to arrive unless the socket is non-blocking
----------------------------------
这一句话怎么能断定loadrunner使用非阻塞的socket?前面已经说得很清楚,socket直到等到接收到数据才返回(这是阻塞调用),unless the socket is non-blocking是“除非这个socket本身就是非阻塞的”。这句话已经说得很明白了,lr_receive_socket本身是阻塞机制实现的,除非底层的socket是异步的。可以做个试验嘛,你录制一个socket脚本,试试连接断掉的情况下,send和receive操作会不会失败。