日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

记录node内存瓶颈分析

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记录node内存瓶颈分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:僅僅是一篇紀實性文章!

概述:不知道因為什么原因,在某個項目新申請的兩臺服務器上將node版本從6.10.0升級到了6.10.1,發現在這兩臺機器上一個node進程占用內存一直再漲,啟動10h左右就會飆升到800M。

服務器系統版本:CentOS release 6.9 (Final) nodejs版本:6.10.1

查看node進程

  • 使用top命令查看服務器內存使用情況
  • 使用pm2 monit監控node進程
  • 排查內存泄漏

    排查內存問題首先需要借助工具來獲取不同時間段的快照文件。

  • node-heapdump
  • npm i heapdump heapdump.writeSnapshot('/var/local/' + Date.now() + '.heapsnapshot') 復制代碼

    該工具使用簡潔,不僅提供了生成快照的方法,還可以在命令行中執行

    kill -USR2 <pid> 復制代碼

    來發送信號生成堆轉儲文件。不過在服務器上安裝的時候總是會報build出錯

  • node-memwatch
  • 提供了leak和stats事件,在事件回調參數中會有內存泄漏的信息,使用memwatch的事件,再配合heapdump,在觸發leak事件時,生成快照文件十分好用。不過同樣,安裝使用時還是會報錯。

  • node-profiler
  • npm install profiler node --prof server.js 復制代碼

    通過以上命令生成test-v8.log 然后

    npm install tick node-tick-processor test-v8.log 復制代碼

    使用時有報錯

  • v8-profiler
  • npm install v8-profiler var profiler = require('v8-profiler') var snapshot1 = profiler.takeSnapshot() snapshot1.export(function(error, result) {fs.writeFileSync('snapshot1.json', result);snapshot1.delete(); }); 復制代碼

    分析快照文件

    通過v8-profiler拿到兩、三份快照文件后,配合chrome的devtool即可進行分析。 1.

    如上例(該案例代碼摘自他處),點開chrome的memory面板,對不同文件進行比較,可以看到哪些構造函數有明顯增加。

    想辦法從服務器拿到文件后,經過分析看不到業務代碼的構造函數分配對象大小有明顯增加,系統函數和數組有明顯增加,于是猜測該版本的node是否有可疑的內存泄漏。issue

    最終將nodejs升級到8解決該問題

    相關ref:

    easy-monit

    node-inspector

    alinode

    總結

    以上是生活随笔為你收集整理的记录node内存瓶颈分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。