Node server扛不住大概会是什么表现?
发布于 1年前 作者 iammapping 795 次浏览

我们的情况: 业务就是从mysql中查列表,有redis缓存; server跑在单机(aws上的m3.large机型,配置是cpu*2,内存7.5g)上,开了两个node进程,mysql和redis都在其他机器上; 高峰qps:100左右,平时qps:60~80左右; 高峰时系统的负载值在3以下,cpu使用大概增加到70~80%,这个时候内存会非常迅速从100M增加到1.4G,然后整个node进程会挂掉,监控显示每10分钟就会重启,而且重启后server也是残废,请求基本都会超时。

按之前php的经验,服务器扛不住时,负载会变得非常高。这下发现平时负载在1.5左右,高峰也就在3左右;qps涨得也不是特别多,平时60~80的时候指标都很平稳,没道理涨20就扛不住;然后内存涨得特别猛,沿着内存泄露的方向找了半个月也没有结果。就在最后没有办法的时候,增加了一台服务器,把流量分了一半出去。现在跑了一个星期,各项指标都平稳了,内存一直维持在100M左右,也一直没有重启过。

我的疑惑:

  1. node扛不住大概会是什么表现呢,是跟我上面描述我们的情况类似吗?
  2. 内存暴增是不是因为cpu处理不过来,请求堆积导致,有没有办法优化?
  3. 有什么办法预警node扛不住了?
4 回复

“高峰时系统的负载值在3以下,cpu使用大概增加到70~80%,这个时候内存会非常迅速从100M增加到1.4G,然后整个node进程会挂掉”

明显是内存泄露了

我想过可能也是高峰时间段的不稳定因素导致内存泄露,还会沿这个方向继续查。 苏大请教一下node扛不住会有什么表现呀

@iammapping 每个请求都占用很高的CPU

是Node bug,还是代码写的不好?

回到顶部