近期的工作中,开始从纯前端转向为Node+前端,遇到最大的一个难题就是内存泄露。 我遇到的问题是:一个日均几千万pv的Node服务,在进程运行超过10个小时之后内存量就会接近1.4G的默认内存上限,然后进程就会报出stack trace的内存溢出,然后被线上环境的pm2重启,然后内存缓慢增长 直至10多个小时之后再一次溢出 pm2重启,如此往复… 问题1:这样程度的问题算不算内存泄露? 问题2:线上环境内存溢出之后被pm2重启进程,对于20-30qps的node服务来说影响大不大? 问题3:这样的内存溢出问题该如何定位内存溢出的点呢,因为线上环境的centos版本较老 而且线上机环境不太容易安装 像memwatch v8-profiler等调试模块进行堆内存快照分析,线下似乎又很难模拟出线上的情况。我把内存溢出定位在了一个module内,但是在线下环境对这个module进行各种benchmark,将snapshot放到profiler里进行comparison显示根本没有内存泄露
真的很头疼,请教各位大神的看法