Bar*_*lom 5 java testing monitoring tcp
我们正在开发一种在线游戏,玩家使用持久的TCP连接与服务器进行通信.持续存在,其生命周期是玩家的会话,如果连接关闭,玩家将被抛出游戏(尽管客户端将尝试自动重新连接).
现在,当然一切都在我们的办公室工作正常(连接到测试和现场服务器),但我们的客户报告说一些玩家断断续续(每隔几秒钟),并且他们自己也经历过(尽管他们的办公室在同一栋楼).
我怎样才能找出这些断开的原因?是因为:
该软件是用Java编写的.它会在玩家断开连接时记录,如果它主动踢它们(例如,为了不发送保持活动消息),它也会记录.
还有许多像我们这样的在线游戏.他们如何处理这个问题?(除非问题出在服务器/数据中心,否则解决方案很明显)
我会要求玩家允许您启用“匿名使用数据”,就像许多应用程序一样,定期将会话中的调试信息上传回给您。这就是你如何判断这些情况的方法。
从那里开始,当发生断开连接时,您将需要一个非常详细的日志。当发生断开连接时,捕获抛出的任何异常(并且不要忘记通过调用来记录原因.getCause()
- 根据需要进行尽可能多的调用.getCause()
,直到您一路记录回根本原因)作为任何相关数据,您需要将客户端日志与服务器端日志进行匹配。您可能需要的信息包括会话 ID、游戏 ID、时间戳等。想一想,“假设我对连接的双方都有深入了解,我认为需要哪些信息才能解决此问题?” 这就是要求用户上传使用情况和调试数据最终得到的结果。
从那里您应该能够弄清楚至少几种您可以控制它的情况 - 也就是说,您可以更改客户端/服务器代码以减轻一些问题。在某些情况下,如果问题是客户端的配置或有故障的设备(或者可能是您无法控制的设备之间的某个设备),您将不得不依赖强大的重新连接。
您永远不会将断开连接减少到零,但是在您看到足够多的案例之后,这些信息应该可以帮助您将断开连接的发生率减少到超出您单独控制的情况,此时您塑造网络的能力将最终结束,您将尽可能接近网络可靠性的“最佳情况”。
归档时间: |
|
查看次数: |
1475 次 |
最近记录: |