node是單線程的,運行 cpu密集型運算不是node的強項,當項目出現問題時對cpu的監控是重要的一環,防止某些運算,太耗費cpu性能,從而影響真個系統的性能。網上介紹的方法不少,這裏說兩種方法。html
1.基於node提供的工具。前端
--prof命令,例如運行node --prof app.js,而且當前目錄下多了一個 isolate-xxx-v8.log 文件,而後執行,node --prof-process --preprocess isolate-0x103000000-v8.log > v8.json,當前文件夾下會多出一個v8.json文件,而後使用v8的工具,固然先下載v8,git clone https://github.com/v8/v8.git,找到v8/tools/profview/index.html,選擇v8.json結果如圖:node
經過這,能夠查找到影響cpu性能的函數,而後作優化就能夠了。不過這種方法有個問題。只能在開發環境用,由於生成的v8.log日誌是和node的主線程相關的,主線程佔有該日誌的文件描述符,你必須停掉node進程才能操做該日誌,因此測試環境和生產上是不能採用這種方法的。git
2.構建cpu監控工具github
也許你會問,網上有好多工具,爲何要本身構建一個呢,不是浪費時間嗎?注意同窗這涉及到安全問題,網上的代碼可信任程度,你不能肯定他是否有後門,再說了這個東西並不難。下面簡要說一下原理,到了測試環境和生產環境,咱們基本要作到實時監控,又不能影響node的性能,因此應該單獨起一個線程,監聽系統cpu和內存的使用狀況,每秒監聽一次就夠了。而後該進程同時也是一個node服務,經過socket將數據傳遞到前臺,前端經過echart作數據展示,很方便的,我大概寫了一個監控本機cpu和內存使用狀況,如圖:json