Skip to content

Latest commit

 

History

History
19 lines (12 loc) · 1.14 KB

QA.md

File metadata and controls

19 lines (12 loc) · 1.14 KB

测试遇到过的问题和经验

  1. 大量客户端测试时服务器或者客户端收不到对方信息,但发送成功,因为bind时候bind到了Ipv6,相同的的ipv4端口被其他进程占用导致, 在启动参数加上 -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false 禁用ipv6
  2. 大吞吐量测试时发现系统丢包严重,epoll模型接收只占用一个线程且cpu泡满,后开启SO_REUSEPORT参数优化为多核,参考https://www.jianshu.com/p/61df929aa98b
  3. 大量连接时定时任务使用java api定时线程耗时太多,优化为时间轮
  4. 朋友使用kcp在游戏内连接保持和心跳设计分享:

使用conv用作连接唯一标识

服务器端设置心跳10分钟超时

客户端设置心跳时间10秒钟超时

客户端在没有发数据包的时候,每秒发送一个心跳包,服务器收到立即回一个,如果10秒没有收到服务器的回执则认为超时断开了

客户端超时后提示游戏界面网络断开需要重连,重连时将本地udp重新绑定端口使用新的端口发送数据,原kcp对象不变

如果是游戏关掉了再连接,使用新的conv值