|
最近做一个系统,服务器和客户端都是在linux上的,用了EPOLL机制。录制脚本用了wplus_init_wsock.exe,程序仅仅是检查了客户端和服务器的一次网络握手,脚本如下:
Action()
{
lr_rendezvous("test");
lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=172.25.4.108:8586", LrsLastArg);
lrs_send("socket0", "buf0", LrsLastArg);
lrs_receive("socket0", "buf1", LrsLastArg);
lrs_close_socket("socket0");
return 0;
}
附上data.ws,如下:
;WSRData 2 1
send buf0 70
"10000001"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"1.0.0"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00"
recv buf1 2
"1\n"
持续跑10个并发的时候,表现正常。持续跑30个并发,在不同时间点(如五分钟、十分钟等)出现大批量的failed,都是报错:Action.c(16): Error : socket0 - Connection reset by peer. Error code : 10054.
并且在服务器发现突然出现大批量的close_out状态。
服务器端连接数和缓冲大小已经做过多次调整,错误依然。
查了一下,linux的链接close_out状态是因为通信通道异常关闭造成的。
有没有高手遇到过的,帮忙解释一下如何解决啊。是不是脚本有问题,还是程序有问题? |
|