我有一個使用Node.js + Express 3 + Jade製作的應用程序,它使用MySQL DB和node-mysql模塊。Node.js高CPU使用率,如何調試?
該應用程序由PM2啓動和監視。
當主頁被加載時,我看到CPU的使用率很高,如下圖所示。
開始頁面上的MySQL數據庫執行三次查詢,而且如果我把JSON對象,而不是MySQL的查詢,似乎CPU使用率仍然很高。
有一種方法可以跟蹤終端功能的CPU使用情況,以瞭解CPU使用率高的原因?
我有一個使用Node.js + Express 3 + Jade製作的應用程序,它使用MySQL DB和node-mysql模塊。Node.js高CPU使用率,如何調試?
該應用程序由PM2啓動和監視。
當主頁被加載時,我看到CPU的使用率很高,如下圖所示。
開始頁面上的MySQL數據庫執行三次查詢,而且如果我把JSON對象,而不是MySQL的查詢,似乎CPU使用率仍然很高。
有一種方法可以跟蹤終端功能的CPU使用情況,以瞭解CPU使用率高的原因?
我解決我的問題CPU剖析感謝。
我試圖在我的端點函數的更多部分記錄CPU使用情況,但這種方法沒有幫助。 大家誰需要得到CPU使用率這個腳本這是非常好的: http://gist.github.com/bag-man/5570809
要排除我創建一個只進行查詢的簡單應用程序中的問題涉及到MySQL查詢和我ApacheBench進行了測試。 該測試已成功通過。
之後,我找到了解決方案。
剖析了Node.js的都能在這裏找到解釋: https://nodejs.org/en/docs/guides/simple-profiling/
我跑了應用程序內置的分析器:
NODE_ENV=development node --prof app.js
我通過ApacheBench
ab -k -c 20 -n 250 "http://localhost:8080/"
提出了一些要求我生成了一個processed.txt
node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt
在總結我得到的是:
[Summary]:
ticks total nonlib name
4036 22.6% 23.3% JavaScript
13130 73.6% 75.9% C++
1334 7.5% 7.7% GC
527 3.0% Shared libraries
144 0.8% Unaccounted
「自下而上(重)曲線」 是所有與醜化-JS模塊:
/node_modules/with/node_modules/uglify-js/lib/parse.js
所以找的依賴我看到這個模塊是由Jade使用。
我的應用程序執行了很多查詢並生成一個大的Json對象,它傳遞給了Jade模板引擎。
Jade使用了大量的CPU來解析傳遞的大對象。
作爲第一個我從0.35.0更新到1.3.1模塊(因爲帕格仍在阿爾法)。
Jade使用了大量的CPU來解析傳遞的大對象。
作爲第一個我從0.35.0更新到1.3.1模塊(因爲帕格仍在阿爾法)。
感謝此更新,表演增加了。
但最後我打算不重查詢加載頁面,並獲得通過REST服務所需要的信息,而無需將數據傳遞到翡翠
「主要頁面加載我看到一個非常高的CPU使用」 - DO你的意思是你在執行應用程序時總會看到很高的使用率,只有在加載主頁面時纔會看到它,或者只有在第一次加載主頁面時纔會看到它? –
這個應用程序只有兩個頁面。 開始頁面是一種配置器,因此它在開始時會進行一些查詢,而其他查詢則通過AJAX Rest服務執行。 第二頁(最重要)在開始時有很多查詢,在這種情況下,CPU使用率爲80/100%。應用程序會將一些數據存儲在會話中,並且在此頁面中執行的其他操作(通過REST服務)的CPU使用率非常低。所以我認爲MySQL查詢可能是個問題,但我需要一種方法來檢查它,也許可以解決它。 – Zauker