记录node内存瓶颈分析
注:僅僅是一篇紀實性文章!
概述:不知道因為什么原因,在某個項目新申請的兩臺服務器上將node版本從6.10.0升級到了6.10.1,發現在這兩臺機器上一個node進程占用內存一直再漲,啟動10h左右就會飆升到800M。
服務器系統版本:CentOS release 6.9 (Final) nodejs版本:6.10.1
查看node進程
排查內存泄漏
排查內存問題首先需要借助工具來獲取不同時間段的快照文件。
該工具使用簡潔,不僅提供了生成快照的方法,還可以在命令行中執行
kill -USR2 <pid> 復制代碼來發送信號生成堆轉儲文件。不過在服務器上安裝的時候總是會報build出錯
提供了leak和stats事件,在事件回調參數中會有內存泄漏的信息,使用memwatch的事件,再配合heapdump,在觸發leak事件時,生成快照文件十分好用。不過同樣,安裝使用時還是會報錯。
通過以上命令生成test-v8.log 然后
npm install tick node-tick-processor test-v8.log 復制代碼使用時有報錯
分析快照文件
通過v8-profiler拿到兩、三份快照文件后,配合chrome的devtool即可進行分析。 1.
如上例(該案例代碼摘自他處),點開chrome的memory面板,對不同文件進行比較,可以看到哪些構造函數有明顯增加。
想辦法從服務器拿到文件后,經過分析看不到業務代碼的構造函數分配對象大小有明顯增加,系統函數和數組有明顯增加,于是猜測該版本的node是否有可疑的內存泄漏。issue
最終將nodejs升級到8解決該問題
相關ref:
easy-monit
node-inspector
alinode
總結
以上是生活随笔為你收集整理的记录node内存瓶颈分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 家里路由器要每天重启-家里路由器要每天重
- 下一篇: 百度云不限速就用它-如何百度云不限速