经常遇到整个服务器卡死,系统盘读操作被占满,内存确是正常。补充一下,这个项目使用 bytenode 编译后文件在跑,不是源代码跑。
axios 也做了统一处理
const axios = require('axios'); const https = require('https');
// 全局 10 秒超时 axios.defaults.timeout = 10000;
// 创建自定义的 HTTPS 代理,限制连接数
const httpsAgent = new https.Agent({ keepAlive: true, keepAliveMsecs: 30000, maxSockets: 30, // 限制并发连接数 maxFreeSockets: 5, // 限制空闲连接数 timeout: 10000, // 连接超时 });
// 创建 axios 实例
const apiClient = axios.create({ httpsAgent: httpsAgent, timeout: 10000, // 请求超时 maxRedirects: 3, });
module.exports = apiClient
有没有大佬能出出主意,到底是哪里出问题了?
需要先停止 pm2 然后再构建 还是会出现 磁盘直接拉满的情况
阿里云:2vCPU/1GiB-ESSD 云盘/30GiB
腾讯云:CPU - 1 核 内存 - 2GB 系统盘 - SSD 云硬盘 50GB
测试方式:fio --name=randread --rw=randread --bs=4k --size=512M --numjobs=8 --iodepth=32 --runtime=30 --ioengine=libaio --direct=1 --group_reporting
测试结果:
手里没有阿里云 50G 硬盘的,轻量,不知道表现怎么样。
程序把内存用完了之后
就会使用磁盘来写内存
磁盘读写直接拉满
然后就卡死了
排查:先查看死机之前的内存是不是 100%了。
注:nodejs 内存泄漏很正常,最好用容器来部署应用 限制内存 到一定阈值就重启程序