记一次linux故障排查---发送请求耗时较长

在我们的测试环境linux主机上,我们接口访问时长都比较耗时,所以开始排查问题

首先我们的接口是这样的:A服务调用B服务(6s左右),B服务调用三方API(6s左右),耗时12s

ps:A服务和B服务都在一台linux主机上,请求A服务接口后,1s后调用B服务,但是B服务5s后才收到请求,

第6s开始请求三方,询问了三方,三方显示11s才收到请求

排查:

首先我本地启动A服务,访问本地接口,本地A服务会调用Linux主机的B服务(1s左右),B再调用三方API(6s左右)

很显然,代码和发送请求的工具类都是没有问题的,问题出在服务器的配置上

 

于是,在运维的协助下找到原因:发送请求之后,有5s的时间大概花费在DNS服务解析上,导致两次调用请求DNS解析就花费了10s左右,大大影响了接口的耗时

解决:在linux主机的/etc/hosts文件下,增加域名解析配置,这样域名直接在本地解析,不用去请求根DNS域名服务器,问题解决

重新访问接口,耗时大概1-2s

 

DNS解析过程:

以访问百度首页为例子

1.在浏览器中输入www.baidu.com之后,系统会检查本地hosts文件是否存在域名映射,如果存在,则域名解析到此完成,我们在本地开发时经常就是这么做的。

2.如果本地hosts文件不存在映射关系,则会查询本地DNS缓存,如果存在,则域名解析完成。

3.如果本地DNS缓存没有命中,则查找本地DNS服务器,如果存在,则域名到此解析完成。

4.如果本地DNS服务器已缓存了此域名映射关系,则返回此映射,完成域名解析。

5.如果以上解析都失败了,本地DNS服务器会把请求发至 根DNS服务器,根DNS服务器收到请求后会返回一个负责该顶级域名服务器的IP。本地DNS服务器收到IP后,将会请求这个IP对应的服务器,就这样逐层查找,直至找到baidu.com主机。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值