Guide 開髮指南

找出效能殺手

線上服務的效能優化,是一項近乎迷信的工作。一群程式設計師對著一大堆不知所雲的程式碼,互相猜測是不是對方把cpu 都給用掉。花費大量時間記錄日誌,在海量的日誌裡日以繼夜地翻看,試圖找到效能殺手。

然而使用fibjs,這一切都將變得簡單起來。因為fibjs 有強大的cpu 和記憶體profiler 支持,而且使用十分方便。

記錄日誌

fibjs 啟動cpu profiler 極為簡單,啟動時增加--prof選項即可。缺省的日誌間隔是1000ms,隨著最佳化的深入,你會需要更高精確度的分析日誌,此時可以使用--prof-interval設定間隔。以下的例子,每10ms 記錄一次fibjs 工作日誌。

1
fibjs --prof --prof-interval=10 main.js

處理日誌

運行正常結束,或使用ctrl_c 結束進程後,當前目錄下會產生一個日誌文件,檔案名稱是fibjs-xxxx.log,此時,你可以使用--prof-process處理產生的日誌:

1
fibjs --prof-process fibjs-xxxx.log prof.svg

運行結束,使用瀏覽器打開prof.svg,即可查看此次日誌的火焰圖: prof 你可以點擊查看全尺寸的圖片,在全尺寸圖片中,你可以透過滑鼠操作,查閱更詳細的資訊:prof. svg

火焰圖解讀

產生的火焰圖中,每一個色塊,代表一個記錄點,色塊越長,表示被記錄的次數越多;每一行代表一層調用堆疊,層數​​越多表示調用的層數越多;調用堆疊的擺放,是倒置的,越靠下的色塊,越是最初的函數。

色塊的顏色有兩類,一類是紅色,一類是藍色。在fibjs 的profiler 裡,紅色代表JavaScript 運算,藍色代表io 運算或Native 運算。根據你需要解決的問題不同,所需要關注的區域也會不同。例如你需要解決cpu 佔用過高的問題,此時需要注意紅色的色塊;而如果你的應用,cpu 佔用不高,但是響應卻比較慢,就需要關注藍色的色塊。靠近頂部越大的色塊,越是需要關注和優化的重點。

👉 【同步與非同步