You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用Riot外部API时随机停滞1分钟的原因排查

排查思路与建议

针对你遇到的Fastify服务器调用Riot API时随机出现1分钟请求停滞的问题,结合你已完成的排查动作,给出以下具体方向:

1. 拆分性能测量,定位停滞阶段

把请求全链路的耗时拆解开,明确是DNS解析、TCP连接建立,还是请求发送后的响应等待阶段出现了延迟:

const dns = require('dns').promises;

// 测量DNS解析耗时
performance.mark('dns-start');
await dns.resolve('europe.api.riotgames.com');
performance.mark('dns-end');
console.log('DNS解析耗时:', performance.measure('dns', 'dns-start', 'dns-end').duration);

// 测量请求本身耗时
performance.mark('request-start');
const matchDataResponse = await axios.get(
  `https://europe.api.riotgames.com/tft/match/v1/matches/${matchId}`
);
performance.mark('request-end');
const reqDuration = performance.measure('request', 'request-start', 'request-end').duration;
if (reqDuration > 5000) {
  console.log('请求耗时:', reqDuration);
}

如果DNS解析耗时正常,问题大概率出在TCP连接或API响应阶段。

2. 调整HTTP客户端连接池配置

Node.js内置的http/https模块默认每个主机仅允许5个并发连接,若服务并发请求超过该限制,新请求会排队等待可用连接,可能恰好导致1分钟停滞。可以修改Axios的连接池参数:

const https = require('https');
const keepAliveAgent = new https.Agent({
  maxSockets: 20, // 增大并发连接数
  keepAlive: true, // 启用连接复用
  keepAliveMsecs: 30000
});

// 请求时指定自定义Agent
const matchDataResponse = await axios.get(
  `https://europe.api.riotgames.com/tft/match/v1/matches/${matchId}`,
  { httpsAgent: keepAliveAgent }
);

3. 抓包分析全链路请求

用tcpdump或Wireshark抓取慢请求的网络包,确认:

  • 请求是否及时发送到Riot API服务器
  • 服务器是否在1分钟后才返回响应
  • 是否存在TCP重传、连接超时或握手失败的情况
    若抓包显示请求发送后长时间无响应,说明问题出在Riot API端或中间网络;若请求未及时发送,则是自身客户端或网络配置问题。

4. 排查DNS解析异常

随机延迟可能和DNS解析不稳定有关,可尝试:

  • 手动指定可靠的DNS服务器(如8.8.8.8)进行测试
  • 在代码中添加DNS缓存逻辑,避免重复解析域名

5. 检查中间件/拦截器的影响

即使是无关功能的改动,也需确认新增的Fastify插件、Axios拦截器是否意外引入延迟逻辑(比如错误的重试机制、超时等待)。可以临时禁用近期新增的中间件,观察问题是否消失。

6. 验证Riot API端点状态

  • 切换到Riot其他区域的API端点(如na1.api.riotgames.com)测试请求耗时,若其他区域正常,则说明欧洲节点存在局部故障
  • 再次核对Riot开发者平台的状态公告,部分边缘节点故障可能未在全局状态页显示

7. 排查操作系统网络限制

检查服务器的网络资源限制:

  • 用ss -s查看TCP连接状态,确认是否存在大量TIME_WAIT或CLOSE_WAIT连接占用资源
  • 检查系统文件描述符上限(ulimit -n),若过低可能导致无法建立新连接

内容的提问来源于stack exchange,提问作者Tomek Słoma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:11:31