Guide 開髮指南

找出性能殺手

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

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

記錄日誌

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

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

火焰圖解讀

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

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

👉 【