axios长时间运行性能下降问题修复

axios长时间运行性能下降问题修复

编写项目中,使用到 axios 请求页面内容。项目刚启动时,一切运行良好,但当长时间运行,大约数小时后, axiosget 请求需要数秒才能有响应

初步排查

项目类似爬虫脚本,每秒会发起大量的请求,且不能保证目标域名和 ip 一致。部分地方更换 fetch 发现使用 fetch 一切正常,长时间运行正常。

但是发现 fetch 在某些地方还是有某些问题。

于是继续排查。网络上无法查找到类似的问题解答,也几乎没人遇到这个问题?

keepAlive 导致的问题

keepAlive 是用来与服务器保持长连接的功能,默认是开启的。它与服务器建立长连接,避免访问同一服务器时,频繁建立 tcp 连接。

keepAlive 本意上是加快访问的功能

如果 axios 每次访问的服务器、域名、ip不一致,那么尽量关闭此选项,如果短时间大量请求不同的ip,也许会创建大量的连接导致某些问题

axios 关闭 keepAlive 后,就没有长时间运行后,响应缓慢的问题。

axios 关闭 keepAlive 方法

// 首先导入模块
const http = require('http');
const https = require('https');
const axios = require('axios');


// 构建 agent,然后指定 httpAgent 即可关闭
const agent =  new http.Agent({keepAlive: false});
const agents = new https.Agent({keepAlive: false});
axios.defaults.httpAgent = agent;
axios.defaults.httpsAgent = agents;
axios.defaults.keepAlive = false;  // 关闭连接复用

axios.defaults.httpAgentaxios.defaults.httpsAgent 分别对应 httphttps ,要分别指定才行

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://zwc365.com/2024/04/22/axios长时间运行性能下降问题修复

Buy me a cup of coffee ☕.