FlameScope 更高级全面的火焰图
FlameScope 更高級全面的火焰圖
文章目錄
- FlameScope 更高級全面的火焰圖
- 安裝步驟
- 安裝問題fix
- 使用方式
網飛(Netflix)開發的火焰圖工具能夠更好得呈現出一段時間內的服務器on/off cpu 的熱力圖。
安裝步驟
$ git clone https://github.com/Netflix/flamescope
$ cd flamescope
$ pip install -r requirements.txt
$ python3 run.py
如果安裝成功,運行到最后一步會輸出如下,flamescope會啟動一個httpserver:
$ python3.9 run.py * Serving Flask app "app" (lazy loading)* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: on* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)* Restarting with stat* Debugger is active!* Debugger PIN: 888-173-631
如果某一步失敗,一般是第三步和第四步 會出現python相關的錯誤,可以參考如下錯誤的解決辦法。
安裝問題fix
-
ImportError: cannot import name ‘Feature’ from ‘setuptools’
因為python3中的setuptools 版本默認升級到了46及以上,但是Feature 接口已經在46及以上的setuptools版本中移除了,所以使用會有問題
如果想要python3運行時使用Feature這個模塊,需要安裝小于46版本的setuptools
pip install --upgrade pip setuptools==45.2.0
即可解決 -
ImportError: failed to find libmagic.
libmagic 版本過高,python3運行時找不到對應的動態庫降低這個版本的庫即可:
pip uninstall python-magic pip install python-magic-bin==0.4.14 -
TypeError: required field “type_ignores” missing from Module
在
/usr/local/lib/python3.9/site-packages/werkzeug/routing.py代碼中要求一些函數運行必須攜帶參數# 將改行代碼更換成如下即可,為函數ast.Module增加一個空參數 # module = ast.fix_missing_locations(ast.Module([func_ast],[])) module = ast.fix_missing_locations(ast.Module([func_ast])) code = compile(module, "<werkzeug routing>", "exec")globs, locs = {}, {} exec(code, globs, locs)return locs[func_ast.name]接下來即可啟動flame graph 的httpserver了
python3 run.py
使用方式
flamescope的介紹以及使用 官方也給了兩個視頻,而基本火焰圖的查看這里不再多說,從底向上是函數層級的調用占用CPU的比例。
FlameScope Introduction
FlameScope Examples
安裝完成,并運行python3 run.py成功之后,會成功啟動一個flamescope的httpserver。
如果沒有配置flamescope/app/config.py文件中的ip和端口號,則可以通過http://127.0.0.1:5000訪問examples中的熱力圖。
點開一個perf數據
可以看到如上熱力圖,其中橫軸是時間,總共采樣了60s,每一個縱軸代表一秒內的1000ms cpu占用情況,可以看到單縱軸小方格內顏色越深的小方格,表示這段時間內的cpu消耗較多。
通過這個圖能夠非常清晰得看到一段時間內CPU的消耗情況,具體哪一部分消耗較多,可以選擇對應區域的小方格看到這段區域的火焰圖數據,非常直觀。
如果想要看自己抓的熱力圖,可以通過perf命令采樣自己應用進程的oncpu數據,flamescope會在當前文件自動識別到perf的結果數據:
$ sudo perf record -F 49 -p <pid> -g -- sleep 120
$ sudo perf script --header > stacks.oncpu
如果安裝了bcc工具集,通過offcpu命令抓取offcpu的火焰圖,同樣能夠看到offcpu的數據:
offcputime -df -p <pid> 60 > stacks.offcpu
總結
以上是生活随笔為你收集整理的FlameScope 更高级全面的火焰图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阴阳师秘卷书童在哪里?
- 下一篇: 从paxos到raft zab,为何r