node中请求超时的一些坑
Posted on May 2, 2020
背景 近期在做一个dns服务器切换的演练中出现了如下场景: op重启主dns服务器,期望服务访问经由另外一台从dns服务器进行解析,对线上服务无影响。但实际情况是nodejs服务耗时增加,且出现了部分502。nodejs作为站点渲染层收到请求后会利用axios库向下游服务发起http请求。我们正常情况下计算了进出nodejs的耗时大概在80毫秒以下,但是在重启主dns服务器的时间段内,nodejs耗时超过了1~3分钟。下游服务(java)耗时没有明显增加。 node版本10.16.3,axios使用版本0.19.2,请求下游服务有设置timeout: 3000,但是并未生效。所以本篇借着axios的实现说明一下在node中http模块的timeout有什么需要注意的地方。我们期待的是经过axios传递了timeout参数不论是dns查询还是tcp链接超时都能命中,但目前看并非这样。 准备工作 步骤1: 需要一个resolver.js提供dns解析能力,用来模拟慢dns查询的情况,这段代码主要来自于网络,连域名都没有改。我加了一个sleep函数是为了模拟3秒慢查询。代码如下 // The regular expression keyword in domain name. const domain = /hursing/; // When keyword matched, resolve to this IP. const targetIp = <span...
» [Read More]
» [Read More]