找出性能殺手
在線服務的性能優化,是一項近乎迷信的工作。一群程序員對著一大堆不知所云的代碼,互相猜測是不是對方把cpu 都給用掉。花費大量時間記錄日誌,在海量的日誌裡日以繼夜地翻看,試圖找到性能殺手。
然而使用fibjs,這一切都將變得簡單起來。因為fibjs 有強大的cpu 和內存profiler 支持,而且使用十分方便。
記錄日誌
fibjs 啟動cpu profiler 極其簡單,啟動時增加 缺省的日誌間隔是1000ms,隨著優化的深入,你會需要更高精度的分析日誌,此時可以使用 以下的例子,每10ms 記錄一次fibjs 工作日誌。--prof
--prof-interval
1fibjs --prof --prof-interval=10 main.js
處理日誌
運行正常結束,或者使用ctrl_c 結束進程後,當前目錄下會生成一個日誌文件,文件名是fibjs-xxxx.log
--prof-process
1fibjs --prof-process fibjs-xxxx.log prof.svg
運行結束,使用瀏覽器打開prof.svg,即可查看此次日誌的火焰圖:
火焰圖解讀
生成的火焰圖中,每一個色塊,代表一個記錄點,色塊越長,表示被記錄的次數越多;每一行代表一層調用堆棧,層數越多表示調用的層數越多;調用堆棧的擺放,是倒置的,越靠下的色塊,越是最初的函數。
色塊的顏色有兩類,一類是紅色,一類是藍色。在fibjs 的profiler 裡,紅色代表JavaScript 運算,藍色代表io 操作或者Native 運算。根據你需要解決的問題不同,所需要關注的區域也會不同。比如你需要解決cpu 佔用過高的問題,此時需要關注紅色的色塊;而如果你的應用,cpu 佔用不高,但是響應卻比較慢,就就需要關注藍色的色塊。靠近頂部越大的色塊,越是需要關注和優化的重點。