V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NobodyVe2x
V2EX  ›  Node.js

NodeJS 阿里云服务器,经常遇到整个服务器卡死,系统盘读操作被占满

  •  1
     
  •   NobodyVe2x · 23 天前 · 3704 次点击

    经常遇到整个服务器卡死,系统盘读操作被占满,内存确是正常

    补充一下,这个项目使用 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

    有没有大佬能出出主意,到底是哪里出问题了?

    41 条回复    2025-07-03 10:15:05 +08:00
    NobodyVe2x
        1
    NobodyVe2x  
    OP
       23 天前
    补充一下: 某一个时间点突然系统盘的读操作 从两三分钟内飙升到 2000/s , 平时就 5 以下。 出现过好多次,但是不知道原因。
    foxhunt
        2
    foxhunt  
       23 天前
    可能是服务器配置较低造成

    当时 docker 跑 gitlab 时,出现过 IO 飙升的情况
    进行了多种尝试,包括开启 swap 等,均无效果

    后来换了 gitea 就好了

    升配下观察下
    NobodyVe2x
        3
    NobodyVe2x  
    OP
       23 天前
    @foxhunt 好的, 配置确实不高
    humbass
        4
    humbass  
       23 天前 via Android
    bytenode 不会是加密了整个项目吧,适当的逻辑,或者方案啥的抽出来,加密下就 OK 了。
    NobodyVe2x
        5
    NobodyVe2x  
    OP
       23 天前 via Android
    @humbass 是加密了整个项目, 其实抽出来核心逻辑就行,没必要整个项目都加密
    dfdd1811
        6
    dfdd1811  
       23 天前
    我司好多阿里的设备,上面有 k8s ,但是有些甚至没有很高负载,表现就是突然硬盘读写飙升,然后卡死,ssh 上不去,只能重启。无解,找不到原因,而且配置都不低的,只能确认业务然后重启
    seansong
        7
    seansong  
       22 天前
    有没有可能是代码中不适当的 require 或者 read 什么了

    以前我遇到过一个类似的磁盘问题,最后发现是阿里云的云盾进程在发癫,卸载掉就好了。op 可以在控制台看一下具体是什么进程在疯狂的读取,进一步判断一下
    rekulas
        8
    rekulas  
       22 天前
    怀疑还是内存不足导致,复制复制镜像升级到一个大内存的对比测试下
    songtianlun
        9
    songtianlun  
       22 天前 via Android
    是不是内存不足疯狂切换导致 IO 彪高。我遇到过好多次,严重时都得强制重启。
    Martin123123
        10
    Martin123123  
       22 天前
    轻量云还是 ecs ,建议看一下 CPU 积分
    lawfun
        11
    lawfun  
       22 天前
    用 vscode remote 远程开发连腾讯云和阿里云 轻量云 也是经常卡死,磁盘 100%
    3825995121
        12
    3825995121  
       22 天前   ❤️ 1
    你大概没有限制程序的内存
    程序把内存用完了之后
    就会使用磁盘来写内存
    磁盘读写直接拉满
    然后就卡死了
    排查
    先查看死机之前的内存 是不是 100%了
    3825995121
        13
    3825995121  
       22 天前
    nodejs 内存泄漏很正常
    最好用容器来部署应用 限制内存 到一定阈值就重启程序
    peasant
        14
    peasant  
       22 天前   ❤️ 1
    贴一个阿里云轻量和腾讯云轻量的 IO 测试对比
    阿里云: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 硬盘的,轻量,不知道表现怎么样。
    abelai
        15
    abelai  
       22 天前
    碰到过服务器内存不够,还剩个 100m 左右的内存 ,然后有个定时任务 dnf-makecache 一执行就会 io 飙升,然后服务器卡死 ssh 都连不上,只能强制重启
    vvong
        16
    vvong  
       22 天前
    碰到过 strapi 项目 npm run build 的时候直接磁盘拉爆 需要手动重启服务器
    需要先停止 pm2 然后再构建 还是会出现 磁盘直接拉满的情况
    cwliang
        17
    cwliang  
       22 天前
    内存正常,读盘被占满,是不是有什么循环遍历的同步 IO 操作?
    zeusho871
        18
    zeusho871  
       22 天前 via Android
    就是阿里云垃圾,硬盘限速很厉害不给你跑满,遇到内存炸了就走 swap 然后整个机器都崩溃了🤣
    mark2025
        19
    mark2025  
       22 天前
    @foxhunt GitLab 对于资源要求比较高,至少 4c16g ,和 docker 无关。
    mark2025
        20
    mark2025  
       22 天前
    @peasant tx 云 1C 比阿里云 2C 还要强?
    sagaxu
        21
    sagaxu  
       22 天前
    阿里云硬盘就是垃圾,低配 IOPS 只有 2000 ,用超了很可能会死机,后台重启要好几分钟。

    把阿里云盾之类的全部禁用掉,swap 也禁用,内存占用不要超 90%,我这么做之后就没遇到过了。
    peasant
        22
    peasant  
       22 天前
    @mark2025 这个是磁盘 IO ,跟 CPU 应该没啥关系,我看阿里云描述是硬盘越大给的 IO 越高,但是这个 30G 的就给这么点,确实很抠,不知道 50G 能给多少。
    haython
        23
    haython  
       22 天前
    之前用阿里云,内存一旦爆满,100%死机
    baiduyixia
        24
    baiduyixia  
       22 天前
    同样遇到了
    ChrisFreeMan
        25
    ChrisFreeMan  
       22 天前
    JS 真的非常容易内存泄露,我有点想回去写 swift 了。。也许 swift 才是我的真爱。
    viking602
        26
    viking602  
       22 天前
    我一直以为就我这样 原来大家都会这样 我那台阿里也是很容易就把 io 写满然后宕
    yh7gdiaYW
        27
    yh7gdiaYW  
       22 天前
    开了 swap 或类似功能的东西吧,阿里云对吞吐量上限卡的非常严格,连续满载的表现就是系统无响应
    yh7gdiaYW
        28
    yh7gdiaYW  
       22 天前   ❤️ 1
    阿里云默认的 vm.swappiness 是 0 (不确定是不是所有系统都这样),优点是性能稳定,缺点是低配机器上容易导致卡死。可以把这个值调大一点,我目前设的是:sudo sysctl vm.swappiness=20
    hugqq
        29
    hugqq  
       22 天前
    阿里服务器的内存爆了就会卡死,这是阿里的通病
    jinlong
        30
    jinlong  
       22 天前
    经验告诉我,你爆内存了。升级 1G 内存,IO 就下来了
    iv8d
        31
    iv8d  
       22 天前 via Android
    估计就是给的 io 不够
    NobodyVe2x
        32
    NobodyVe2x  
    OP
       22 天前 via Android
    @seansong 感谢,可以从这个方向查一下
    NobodyVe2x
        33
    NobodyVe2x  
    OP
       22 天前 via Android
    @Martin123123 我是轻量云,什么是 cpu 积分呀
    realpg
        34
    realpg  
    PRO
       22 天前
    内存炸了而已...
    而且你大概率是轻量...

    轻量属于娱乐用的...
    NobodyVe2x
        35
    NobodyVe2x  
    OP
       22 天前
    @sagaxu 感谢大佬回复,应该有用
    sphawkcn
        36
    sphawkcn  
       21 天前
    轻量云便宜,慢点就慢点,可以理解。

    但是会卡死,而且卡死后必须手动重启来解决就很恼火了。
    johnnyyeen
        37
    johnnyyeen  
       21 天前
    只有读磁盘没有写?虚拟内存换页?
    johnnyyeen
        38
    johnnyyeen  
       21 天前
    我们大量业务都是 Nodejs ,没有遇到这种
    NobodyVe2x
        39
    NobodyVe2x  
    OP
       20 天前 via Android
    @johnnyyeen 这几天分析下来,应该就是内存爆炸了,疯狂 swap ,硬盘就超 io 了,然后死机了,只能强制重启
    best66
        40
    best66  
       12 天前 via iPhone   ❤️ 1
    阿里云真的垃圾,排查了好久,实测 vm. swappiness 设置到 60 可以解决。
    NobodyVe2x
        41
    NobodyVe2x  
    OP
       12 天前 via Android
    @best66 感谢分享
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2873 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:05 · PVG 22:05 · LAX 07:05 · JFK 10:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.