首页 > 其他分享 >排查http接口自动重试现象

排查http接口自动重试现象

时间:2022-11-17 13:26:03浏览次数:37  
标签:http SRE 接口 kong 重试 排查 阿里 com SLB

http接口自动重试现象的排查

标题
现象
排查过程
结论
原因一是公司kong的配置:
原因二:
整体解释
现象
在公司开发时观察到一个奇怪的现象,一个运行时间较长(1分钟)的http接口会被自动调用数次(日志证明它最后调用成功),直到超过5分钟后返回504网关超时(如下图)才停止。如果将此接口的运行时间缩短到比如20秒,则无此现象。


排查过程
一开始怀疑是web应用本身的设置,发现不是。后来怀疑到kong网关或者SRE的设置,于是问SRE。SRE一开始也不清楚,但是提供了一个有用的建议:绕过 kong ,直接在容器内做同样的调用,在集群内使用 curl 访问。结果我这一试还真试出来了:在容器内直接访问是没问题的。

结论
原因一是公司kong的配置:
https://konga.infra.leyantech.com/#!/services/89188cb3-0e38-4f6d-af8c-6cfd3dfa7e91/read :

这里的retries 5,完美对应我观察到的现象。

原因二:
但是这还解释不了,为什么接口运行1分钟就会报超时错误。SRE解释这是阿里云负载均衡的设置导致的。从负载均衡SLB点进去,登录阿里云控制台,可以看到连接请求超时时间为60秒:


整体解释
我通过java.sleep命令设置了接口运行时间为60秒,因为达到了阿里云设置的连接请求超时时间而报504错误。而又因为kong网关的设置,请求了5次大致了retires的上限后才终止调用。
公司API 网关简介文档里有公司HTTP 请求的处理时序图:

❶resolve api.leyanbot.com
查询 api.leyanbot.com 这个域名对应的 ip 地址。这里返回的 ip 地址是 *******,该 ip 上运行的是阿里云 SLB 实例 ,SLB(Server Load Balancer) 是阿里云提供的七层负载均衡服务,你可以打开,点击“登陆阿里云控制台“,了解该 SLB 的更多信息。

❹GET api.leyanbot.com/item HTTP/1.1
SLB 将 HTTP 请求转发给位于 k8s 集群内的 kong;需要注意的是,SLB 虽然是七层协议,理论上可以添加基于 host 和 path 的路由规则,但我们没有深入使用 SLB 的路由规则,而是选择将流量全部转发到 kong,由 kong 将流量最终路由给集群内的指定微服务实例。

服务有若干个实例,kong 会将请求均匀转发给其中每个实例
————————————————
版权声明:本文为CSDN博主「qq_23204557」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_23204557/article/details/126728276

标签:http,SRE,接口,kong,重试,排查,阿里,com,SLB
From: https://www.cnblogs.com/Leo_wl/p/16899155.html

相关文章

  • 使用 Go HTTP 框架 Hertz 进行 JWT 认证
    前言上一篇文章简单介绍了一个高性能的GoHTTP框架——Hertz,本篇文章将围绕Hertz开源仓库的一个demo,讲述如何使用Hertz完成JWT的认证与授权流程。这里要说明的......
  • 常规web流量分析总结及例题(普通http流量,http传输文件流量,https加密流量,视频流)
    web流量分析基本套路流量分析传输了数据:ziprarpngjpgtxtmp3,特别是流量包比较大时需要注意binwalk分离文件,grep或者wireshark内ctrl+f搜索分情况使用导出对象,导出分组字......
  • Web核心之Http,tomcat,servlet
    Http,Tomcat和Servlethttp是超文本传输协议,规定了浏览器和服务器之间的数据传输规则,而他与服务器之间的有请求数据和响应数据的工作。 请求数据的格式:1.请求行:请求数据......
  • 真正“搞”懂HTTP协议04之搞起来
    前两篇文章,我们从空间和时间的角度都对HTTP有了一定的学习和理解,那么基于上一篇的HTTP发展的时间顺序,我会在后面的文章由浅入深,按照HTTP版本内容的更迭,一边介绍相关字......
  • Http和Https的区别?
    1.HTTP是什么?http是超文本传输协议用来在web浏览器和网站服务器之间传递数据信息,http以明文的方式发送内容,不提供任何方式的数据加密,如果攻击者截获了Web浏览器和网站服务......
  • 记录一次实验室linux系统的GPU服务器死机排查过程——某显卡满负荷导致内核进程超时导
    在自己没有管理多台高负荷的ubuntu显卡服务器之前,我是万万想不到linux服务器居然也是如此容易死机的。什么每个版本的TensorFlow调用显卡驱动时和内核不兼容,什么系统自动升......
  • 记录一次实验室linux系统的GPU服务器死机故障的排查——Linux系统的Power States
    实验室的ubuntu服务器不知怎么的突然又崩溃了,死机重启,然后查看日志,发现了下面的情况:    由于从其他的日志中知道是显卡的问题引起的死机,而这个显卡的地址正好是D9:00,这......
  • 3HTTP协议介绍
    HTTP协议介绍设计HTTP(HyperTextTransferProtocol)是为了提供一种发布和接收HTML(HyperTextMarkupLanguage)页面的方法。Http组成由两部分组成:请求与响应客户端请......
  • 用html5 实现断点续传 (HTTP)
    ​ 总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比......
  • javaweb 5、HttpServletResponse
    HttpServletResponseweb服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse如果要获取客户端......