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

EC2(Amazon Linux 2)上Axios实际超时远短于配置值的异常求助

Axios在Amazon Linux 2 EC2实例中超时配置异常问题

我在Amazon Linux 2系统的EC2实例上运行Express应用,使用Axios调用外部API时遇到异常:明明配置了15秒(15000ms)的超时阈值,但连接无响应API时,Axios仅5秒就抛出超时错误,比设定值快10秒。奇怪的是,错误消息仍正确显示设定的15秒超时时长。

这段代码在AWS Lambda及其他环境中运行正常,错误消息与console.timeEnd()输出始终一致。有人遇到过类似问题吗?

测试代码

try {
  console.time()
  const response = await axios.get('https://httpbin.org/delay/20', { timeout: 15000 });
  console.log('Response:', response.data);
} catch (err) {
  console.error('Error:', err.message);
} finally {
  console.timeEnd();
}

运行结果

Error: timeout of 15000ms exceeded
default: 5.07s

可能的原因及解决方法

  • 系统TCP超时限制:Amazon Linux 2默认的TCP连接重试参数(如tcp_syn_retries)可能设置较短,导致底层连接在5秒左右断开,Axios捕获后仍返回配置的超时提示。

    • 查看当前参数:sysctl net.ipv4.tcp_syn_retries
    • 临时调整:sysctl -w net.ipv4.tcp_syn_retries=5(对应约15秒超时)
    • 永久生效:编辑/etc/sysctl.conf添加net.ipv4.tcp_syn_retries=5,执行sysctl -p生效
  • Axios版本问题:不同环境的Axios版本可能存在差异,旧版本在特定系统下可能有超时计算bug。升级到最新稳定版:

    npm update axios
    
  • 网络层面限制:检查EC2实例的安全组、VPC网络ACL,或者上游网络设备是否存在5秒的连接超时规则,这类限制会优先于Axios的配置生效。

  • DNS解析超时:如果目标API的DNS解析耗时过长,可能在5秒内无法完成,触发Axios超时。可以尝试直接用IP调用API,或更换DNS服务器测试。

内容的提问来源于stack exchange,提问作者sarantoo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:13:25