1. 程式人生 > >node之cpu監控

node之cpu監控

node是單執行緒的,執行 cpu密集型運算不是node的強項,當專案出現問題時對cpu的監控是重要的一環,防止某些運算,太耗費cpu效能,從而影響真個系統的效能。網上介紹的方法很多,這裡說兩種方法。

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結果如圖:

通過這,可以查詢到影響cpu效能的函式,然後做優化就可以了。不過這種方法有個問題。只能在開發環境用,因為生成的v8.log日誌是和node的主執行緒相關的,主執行緒佔有該日誌的檔案描述符,你必須停掉node程序才能操作該日誌,所以測試環境和生產上是不能採用這種方法的。

2.構建cpu監控工具

也許你會問,網上有好多工具,為什麼要自己構建一個呢,不是浪費時間嗎?注意同學這涉及到安全問題,網上的程式碼可信任程度,你不能確定他是否有後門,再說了這個東西並不難。下面簡要說一下原理,到了測試環境和生產環境,我們基本要做到實時監控,又不能影響node的效能,所以應該單獨起一個執行緒,監聽系統cpu和記憶體的使用情況,每秒監聽一次就夠了。然後該程序同時也是一個node服務,通過socket將資料傳遞到前臺,前端通過echart做資料展現,很方便的,我大概寫了一個監控本機cpu和記憶體使用情況,如圖: