Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

《udp丢包》 #24

Open
bingtaoli opened this issue Nov 28, 2022 · 0 comments
Open

《udp丢包》 #24

bingtaoli opened this issue Nov 28, 2022 · 0 comments

Comments

@bingtaoli
Copy link
Owner

bingtaoli commented Nov 28, 2022

我们项目的自动化框架是这样的,在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;
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant