这个问题有些怪异。
我们之前有一些 win 下的 c++服务端程序,最近把他转到了 linux 下面。
服务端程序提供 tcp 接口来让客户端程序连接。服务端程序提供了一个简单的 echo 服务来确认双方正常连接(一般所说的心跳检测)。每个客户端 3 秒左右一个 echo 请求,服务端收到之后立刻回复一个 echo 回复包。
问题:
在差不过 200 个客户端程序连接上之后。 客户端发出的包,会有一定几率超过 1 秒才收到回复。
目前 c++ 底层是 epoll 直接操作的。为了防止 epoll 操作有问题。我们尝试了这个 echo 程序和客户端的程序的基础 echo 逻辑 都用 golang 重新实现了一遍。
目前,我们在公司内网\腾讯云、 centos6\centos7 、 裸 linux\docker 容器 NAT 。都测试过。
都或多或少,有这个现象。
我想问,这个是正常的吗? 还是 linux 下 tcp 有什么需要特殊设置的部分?
请大神略微指点一二。 或者略微指点一二关键字也可~~~。