V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wuwukai007
V2EX  ›  程序员

好奇 Java nodejs 等其他语言后端接口服务长时间运行内存有没有缓慢增长这种情况的

  •  
  •   wuwukai007 · 211 天前 · 1005 次点击
    这是一个创建于 211 天前的主题,其中的信息可能已经有所发展或是发生改变。

    还是只有 python 会有?

    10 条回复    2023-09-28 16:35:00 +08:00
    codehz
        1
    codehz  
       211 天前
    一般是你自己内存写泄漏了
    opengps
        2
    opengps  
       211 天前
    内存泄漏,很多时候是代码是写的不够规范
    我虽然没经历过内存泄漏,但我经历过句柄泄漏,当时仅仅是因为 if 后面没有 else 处理,导致线上应用一周下来几十万个句柄,人肉运维了 2 年多,需要经常主动重启下进程
    coderxy
        3
    coderxy  
       211 天前
    做一下内存分析就知道到底是哪些地方在占用了
    c3de3f21
        4
    c3de3f21  
       211 天前
    @opengps 长见识了,还有别的情况吗?或者针对这种情况的帖子
    wuwukai007
        5
    wuwukai007  
    OP
       211 天前
    @codehz python 动态语言内存泄露蛮难查的,还有就是缓慢增长,可能每天+50MB 几个月下来也不少大概这种
    wuwukai007
        6
    wuwukai007  
    OP
       211 天前
    python 动态语言内存泄露蛮难查的,还有就是缓慢增长,可能每天+10MB 几个月下来也不少大概这种
    opengps
        7
    opengps  
       211 天前
    @c3de3f21 再给你分享个我缓存雪崩的案例:
    当时我使用的是 memcached ,memcached 的默认过期规则是,超时时间 30 天。所以经历了几次非常诡异的突然资源飙升连接大量断开重连。后来偶然把服务器启动时间结合起来分析出来,原来我重启服务器或者集中升级时候重启了全部服务,导致过期时间太接近,几十万的连接同时因为没有缓存穿透到数据库访问,硬盘坑不住了所以超时断开,反复重复一个小时稳定不下来。当时发现可能是这个因素导致的问题时候,我都觉得我是个神人
    3825995121
        8
    3825995121  
       211 天前
    我用 nodejs 经常遇到 后来我就配置了一下超过 2 个 G 就重启一下
    我遇到的大部分是 nodejs 调用 c 或 c++的包 nodejs 可能获取到内存之后不会释放 造成 rss 很高
    3825995121
        9
    3825995121  
       211 天前
    缓慢增长的话 就是直接大量请求压测 然后抓内存信息出来查看
    julyclyde
        10
    julyclyde  
       211 天前
    python 我见过漏,有很多迹象指向 numpy
    但是没有切实的证据
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2910 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:48 · PVG 15:48 · LAX 00:48 · JFK 03:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.