记得以前做游戏时,就出现了一个问题,我们鼠标从背包物品上移动时,应该会出现物品的tips信息。在我们的游戏中,从背包的左边格子移动到右边格子时,tips信息总是出现的太慢。这是一个问题。另外一种现象是点击任务NPC后,出现弹框,点击接受任务时从会转一会圈(前端设置了必须后端有消息返回才停止转圈)。而这两个问题其他网页游戏好像都没有,所以我们很奇怪,因为我负责任务模块。
所以我对第两个问题还是很关注,一直以为的后端太卡了。至于在哪里则找不到。后来我们组长对这个过程进行抓包分析后知道是服务器返回消息太慢导致。后来我们就设置了tcp_nodelay,效果很明显,很多响应都快了。其他同事都感觉太神奇了。我也觉得是。哈哈
现在记录一下今天看到这两个定义的理解
nagle算法:为了减少小包的发送次数,进行延迟发包。只有在两个情况下会触发发送:1.前面一个包的ack已经到达 2. 200ms超时到了
tcp_nodelay:禁止nagle算法,有需要发送的就立即发送
tcp_cork:它是一种加强的nagle算法,过程和nagle算法类似,都是累计数据然后发送。但它没有 nagle中1的限制,所以,在设置cork后,即使所有ack都已经收到,但我还是不想发送数据,我还想继续等待应用层更多的数据,所以它的效果比nagle更好。
url