我們的情況:業務就是從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就扛不?。蝗缓髢却鏉q得特別猛,沿著內存泄露的方向找了半個月也沒有結果。就在最后沒有辦法的時候,增加了一臺服務器,把流量分了一半出去?,F在跑了一個星期,各項指標都平穩了,內存一直維持在100M左右,也一直沒有重啟過。我的疑惑:1.node扛不住大概會是什么表現呢,是跟我上面描述我們的情況類似嗎?2.內存暴增是不是因為cpu處理不過來,請求堆積導致,有沒有辦法優化?3.有什么辦法預警node扛不住了?
node扛不住大概會是什么表現?
慕田峪7331174
2019-03-30 09:29:46