對Node應用進行性能分析
性能分析主要就是為了回答這個問題:我的應用程序的運行時間都耗在哪裡了?假設你有一個長時間運行的web伺服器,當訪問特定的一個路徑後,發現CPU佔用率高達100%。乍一看,你可能會以為這個路徑會有什麼特殊的功能,或者也可以開啟一個分析器來讓Node提供相關的一些信息。在這一節的內容中你會了解到如何使用分析器來獲取需要的結果。
我們可以用一個簡單的例子來看一下它是怎麼工作的。這裡有一個程序,來執行兩個不同的任務,每兩秒運行一個比較慢的計算任務,以及更加頻繁地運行一個比較快的I/O任務:
我們可以這樣來對程序進行分析:
node --prof profile-test.js
npm install tick -g
這會為你的操作系統安裝合適的tick-processor來查看這些數據。你可以在同一個目錄下使用下邊的命令來獲取v8.log中更多有用的信息:
node-tick-processor
你可以獲得類似下邊的輸出:(縮略數據格式)
我們看一下每一部分的意義:
Unknown——這一部分的統計,分析器無法找到對應有意義的指針。這一部分會列印出來,但是沒有什麼實際意義,可以安全地把它忽略。
Shared libraries——來自於C/C++的共享類庫,在這一部分也有很多的I/O發生。
JavaScript——這通常是開發者最關心的部分,它包括了應用本身的Node代碼以及V8引擎本身的原生JavaScript代碼。
C++——V8引擎中的C++代碼。
GC——V8的垃圾回收。
Bottom up(heavy)profile——這展示了分析器獲取的耗時最高那部分數據的詳細堆棧。


※Node處理未捕獲的異常
※顯式和隱藏異常及錯誤參數
※一個測試web應用程序的Mocha測試
※簡單的Mocha測試項目的package.json配置文件
TAG:行家匯 |
※如何使用Ensembl資料庫對基因變異進行分類
※分析師表示蘋果沒有對HomePod進行足夠的測試
※如何對分散式 NewSQL 資料庫 TiDB 進行性能調優
※如何利用Keyshot進行渲染
※對ICLoder惡意活動原理進行分析
※如何用ImageJ對條帶進行定量分析?
※蘋果已經準備好用更便宜的iPad與谷歌的Chromebook進行抗爭
※如何使用Tensorflow對象檢測進行像素級分類?
※使用plink進行連鎖不平衡分析
※使用pdb進行Python調試
※谷歌將針對Chrome進行優化:超過5分鐘沒有使用的tabs將停止運行!
※Memcache伺服器可被利用進行大規模DDoS攻擊
※使用 Python 進行分散式系統協調
※linux應用如何進行cpu綁定
※Python 調用 Micro 宏自動解析 Nmon 文件進行數據歸檔
※Facebook就如何使用區塊鏈技術與Stellar進行探討
※用Python對用戶評論典型意見進行數據挖掘
※使用Pandas&NumPy進行數據清洗的6大常用方法
※facebook將推出「用戶信譽評分系統」,對用戶從零到一進行評分
※使用Apache的ab進行壓力測試