这个问题有些怪异。
我们之前有一些 win 下的 c++服务端程序,最近把他转到了 linux 下面。
服务端程序提供 tcp 接口来让客户端程序连接。服务端程序提供了一个简单的 echo 服务来确认双方正常连接(一般所说的心跳检测)。每个客户端 3 秒左右一个 echo 请求,服务端收到之后立刻回复一个 echo 回复包。
问题:
在差不过 200 个客户端程序连接上之后。 客户端发出的包,会有一定几率超过 1 秒才收到回复。
目前 c++ 底层是 epoll 直接操作的。为了防止 epoll 操作有问题。我们尝试了这个 echo 程序和客户端的程序的基础 echo 逻辑 都用 golang 重新实现了一遍。
目前,我们在公司内网\腾讯云、 centos6\centos7 、 裸 linux\docker 容器 NAT 。都测试过。
都或多或少,有这个现象。
我想问,这个是正常的吗? 还是 linux 下 tcp 有什么需要特殊设置的部分?
请大神略微指点一二。 或者略微指点一二关键字也可~~~。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.