服务内存溢出
发布于 2 年前 作者 jiangliqin 1960 次浏览 来自 问答

线上服务发生内存溢出,平均每天都会因为内存爆满导致服务停止后重启。 在日志中没有任何错误异常信息抛出,不知道怎么定位和分析是程序导致作用域没释放,变量无法被回收还是确实有异常。 内存溢出.png

有解决内存溢出的前辈们,我该怎么有效定位问题呢

6 回复

试试看heapdump,既然线上一直都会爆满,那么在本地压测,用heapdmp间隔5分钟输出一批内存日志,然后在chrome的dev tool里面做compare,就能看到一直只增不减的对象是什么了,再定位到代码的具体位置

这是Web服务器项目吗?

@hyj1991 恩,以前其他服务我是这么定位的,可是这个项目有点特殊需要模拟很多线上的环境有点麻烦,也看来只有这样了。。

@sunkuo 不是,是应用服务器

@jiangliqin 还有个办法,基于heapdump做二次开发,不使用里面的信号量,而是你自己做条websocket长连接到监控服务器,这样就能在出现泄漏时通过Websocket把输出内存结构的命令发到 线上应用了,然后让线上应用把输出的结果发到 监控服务器,这样就能做在线的调试了

回到顶部