刚刚在tg上有个群友问了我一个问题,让我觉得不可思议(首先我没有看不起的意思,就是很难理解这种情况)下面一起来聊聊这个事情,获取对遇到问题的同学有所帮助,如果有帮助,请点个赞吧。
问题:我写了一个tg bot,但是bot点击按钮响应很慢,会是哪里的问题?
我看到这个问题的时候第一时间就问他,你能写出bot,尽然不知道为啥,不知道该从何排查吗
他告诉我说自己摸索的bot用到了webhook
上面是我和他了解问题的开头对话
我和他说了一些原因后,他又给我发了一个截图,截图的内容呢就是他去请教别人,这个人应该也是做和他类似bot的开发者,当他问这个人的时候,这个人没有询问任何东西,上来第一句就来了五个字“技术问题啊“
我看到这个截图以后直接爆了一句粗口,为啥爆粗口呢,因为这个人说完技术问题啊以后又来了一句,你用我的不就好了
我就在想,这样讲话的人卖的东西能好用吗,卖东西也不至于这么卖吧?
之所以想发这个帖子其实就是想说一下,大家别被割韭菜,好多问题呢自己静下来想一下就可以解决的
回过头来看这个问题
bot,依赖于联网app的产物,注意我这里说的联网,为什么着重强调联网这个词呢,往后看
首先根据问题我们逐步分析,bot按钮点击响应慢,大部分人第一反应肯定是网络问题,没错,我的第一反应也是网络问题,但是我们不能那么武断的像卖产品的那个人一样,上来什么都不问就下结论,正确的做法应该是把整个流程串一遍,根据结果去逐步的排查缩小范围,然后再去下结论
前面网友提到过依赖webhook,webhook这个东西呢我就不具体说了,理解成api就好了,既然是api那么他肯定是依赖网络的,根据现象来看很有可能就是他请求延迟导致的,但是真的是它吗,不一定,我现在也不确定是不是他
接下来来串流程,首先bot人机交互的时候肯定是由人主动发起请求,点击bot提供的按钮,那么当你点击了按钮以后,按钮肯定绑定了一些操作,他这个按钮下面绑定了一些带有网络请求的操作,当网络请求返回以后,根据返回结果把相应的数据通过请求webhook的链接来达到返回前端的这么一个操作,这个是一整个按钮点击后发生的事情,这里面有过多少次网络请求呢?
1.用户点击按钮,app请求tg,tg解析按钮绑定事件
2.按钮解析后,执行操作,发起请求,请求数据
3.拿到数据,格式化数据后请求webhook
4.webhook收到请求后解析,然后返回到前端
这4个步骤中间任何一步网络延迟高都会导致反应慢,所以这是一个可能存在的原因,还有其他原因吗,debug的时候一定要脑洞大开,能想到的点都要过一遍
众所周知,tg不是随便上的,你得有特殊渠道,那么这个特殊渠道大家都知道,不稳定对吧,那么还有一个原因就是事实上请求并不慢,全部都是正常的,但是呢你客户端的网络不好,导致你看到这个结果的时候过去了很久,这样也会让你的体感认为是点这个按钮反应慢,其实并不是,只是你客户端有问题
到这可能很多人认为排查完了,重点来了,想要卖东西的那个人还记得把,他说过五个字“技术问题啊”没错,技术问题确实会导致这样的结果,因为按钮解析后他是要做操作的,是要请求获得数据的,上面说了延迟问题这里就不说了,但是除了延迟问题还要考虑,请求的地址机器负载高不高,代码有没有问题,代码来个hold几秒,肯定快不了,机器负载高也会导致运算慢,导致数据返回慢
以上是我个人针对这个小问题的一个分析和看法,我个人认为这个分析的方法还是挺有用的。拆分,逐段分析
个人观点,有说的不对的地方可以评论区讨论,也可以发表下大家的观点。
没有评论内容