场景:
现在在做一个基于浏览器的在线客服的一个项目:基于长轮询实现的一对多的聊天工具。
最近现网老是出现说消息发送失败的情况,但是我们对比数据库其实是发送成功了,但是不知道由于什么情况出现了消息发送不成功的提示。
目前只有几种情况会导致出现消息发送失败的提示:
消息发送出去了,对应的消息回执没有收到。
消息发送出去了,收到的消息回执超过了超时时间了。
消息压根就没有发送出去、
消息发送出去了,回执也接收到了,但是我后序处理机制出现问题了。
然后我根据这几种情况去定位问题了。
首先我把本地http请求(猪油请求,没有响应)日志拿过来看了下。发现我是发送了消息了。所以排除了第三条。
然后我拉去了现网日志,发现服务器端收到了消息,而且还发送了回执消息。这个时候可以排除掉第一条了。
这个时候还有2和4不知道是哪种情况了。
问题来了:
由于无法复现出来问题,所以我到现在还不能判断出是我内部机制出了问题,还是收到的消息回执超时了。
很是后悔自己没有把业务层的处理逻辑加入到本地日志中去啊。导致现在还是无法定位出问题来。
最后还是决定加日志,然后再根据反馈去定位问题。新人就是由于没有经验,没有吃过亏,所以不知道日志的重要性!现在看看,日志是多么重要的东西啊。如果当初加了这个日志进去了,那么这个问题就知道是啥东西导致的了。