亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

node扛不住大概會是什么表現?

node扛不住大概會是什么表現?

慕田峪7331174 2019-03-30 09:29:46
我們的情況:業務就是從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扛不住了?
查看完整描述

2 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

php是因為進程多,所以會體現在load上面。load值本質上是指同時運行的進程數,node就是個單線程的東西,就算兩個進程CPU跑滿了也不會讓load超過2。
你的情況應該就是node沒有足夠的CPU資源處理請求,導致各種異步回調都堆積起來,內存釋放不了,最終就惡性循環造成崩潰了。我其實沒有node的CPU占用率的經驗值,你可能可以從這個經驗里面得出一個適合AWS的經驗值。
預警的方法是做一個內存監控,或者干脆就設定一個內存上限,一旦超過就殺掉重啟。對node來說,殺掉進程是比任何一種保守療法更好的做法。
                            
查看完整回答
反對 回復 2019-03-30
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

裝個munin,把系統的各項參數都記錄下來,你很容易就分析到系統瓶頸。
我同意CPU資源不夠的說法,但是沒有證據,或許是socket連接限制呢?畢竟系統里面也沒涉及到復雜的運算。
另外,作為AWS用戶,如果CPU不夠,可以選CPU更強但是內存小一點的產品,很劃算的。
                            
查看完整回答
反對 回復 2019-03-30
  • 2 回答
  • 0 關注
  • 420 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號