我们项目的自动化框架是这样的,在python脚本里面发送请求到进程中执行相关操作,检查日志看是否符合预期。发送数据是udp:
def do_operation(self, opr, msg, tid=-1, print=True):
req = {
'tid': tid,
'msg': {
'opr': opr,
'data': msg
}
}
data = json.dumps(req)
if print:
logger.info(f'do operation : {data} to {self.sport}')
self.sk.sendto(data.encode(), ('127.0.0.1', self.sport))
这几天在性能测试时候,发送量比较快就会出现丢包,而且是集中在发送循环的后面丢包。
早上问了我们的架构师旭哥,他推断是我们的进程接收数据buff满了,udp发送端也不会确保数据发送成功,udp本身也不可靠。
这样性能测试只能分开到多个进程去测试了,单个peer_agent接收数据太多容易丢数据。
查了下资料发现,起udp服务时候可以指定buff大小:
int nRecvBuf = 700 * 1024;//设置为700K
if (0 != setsockopt(m_sock, SOL_SOCKET, SO_RCVBUF, (const char*)&nRecvBuf, sizeof(int)))
{
TRACE(_T("setsockopt buf size failed.\n"), WSAGetLastError());
return FALSE;
}
我们项目的自动化框架是这样的,在python脚本里面发送请求到进程中执行相关操作,检查日志看是否符合预期。发送数据是udp:
这几天在性能测试时候,发送量比较快就会出现丢包,而且是集中在发送循环的后面丢包。
早上问了我们的架构师旭哥,他推断是我们的进程接收数据buff满了,udp发送端也不会确保数据发送成功,udp本身也不可靠。
这样性能测试只能分开到多个进程去测试了,单个peer_agent接收数据太多容易丢数据。
查了下资料发现,起udp服务时候可以指定buff大小: