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

为何请求频率越高、持续越久,axios响应越慢?

响应时间随请求量增长变慢的原因及修复方案

核心问题定位

你的代码存在一个致命性能隐患:每次调用method函数时,都会重复执行axiosRetry(axios, { ... })。axiosRetry的作用是给axios实例添加重试拦截器,每次调用都会新增一套重试逻辑到全局axios实例上。随着请求次数增多,axios的请求/响应拦截器会不断堆积,每个请求都要经过越来越多的拦截器处理,直接导致响应时间逐渐变长——高并发场景下(比如30请求/秒)这个问题会被快速放大。

修复方案

将axiosRetry的初始化代码移到函数外部,仅执行一次即可,无需每次请求都重复配置:

const httpsAgent = new https.Agent({ keepAlive: true })

const axiosRetry = require('axios-retry')
const axios = require('axios')

// 全局仅初始化一次axios重试逻辑
axiosRetry(axios, {
    retries: 3,
    retryDelay: () => 5000,
    retryCondition: (error) => {
        // 用可选链避免无响应时抛出异常
        return error.response?.status === 503;
    }
})

const method = async (URL, request, headers) => {
    const now = Date.now()
    console.time('axios call ' + now)
    try {
        await axios.post(URL, request, {
            headers,
            timeout: 60000,
            httpsAgent
        })
    } catch (err) {
        // 添加错误捕获,避免未处理的Promise rejection
        console.error('请求失败:', err)
        throw err
    } finally {
        console.timeEnd('axios call ' + now)
    }
}

额外优化建议

  1. 增强错误处理:原代码未捕获请求可能抛出的超时、网络错误等异常,添加try/catch可避免进程异常,同时便于排查问题。
  2. 避免全局axios污染:如果项目中其他地方也使用axios,全局修改实例可能影响其他请求。建议创建独立axios实例单独配置重试逻辑:
// 创建独立axios实例,仅用于当前请求场景
const customAxios = axios.create({
    httpsAgent,
    timeout: 60000
})

// 给独立实例配置重试
axiosRetry(customAxios, {
    retries: 3,
    retryDelay: () => 5000,
    retryCondition: (error) => error.response?.status === 503
})

const method = async (URL, request, headers) => {
    const now = Date.now()
    console.time('axios call ' + now)
    try {
        await customAxios.post(URL, request, { headers })
    } catch (err) {
        console.error('请求失败:', err)
        throw err
    } finally {
        console.timeEnd('axios call ' + now)
    }
}

验证方式

修改完成后,用artillery以30请求/秒的频率压测,观察响应时间是否恢复稳定(与直接调用目标URL的表现一致)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:55:24