主要依賴動態追蹤技術實時抓取獲得函式呼叫棧的耗時佔比情況主要介紹相關工具安裝使用
關於動態追蹤 這有篇看不大懂的blog
ngxlua效能分析systemtap 安裝(ubuntu)systemtap擴充套件 這裡主要用來做luajit2.1的**效能分析
火焰圖svg製作工具
新增ubuntu ddebs原始檔,在命令列貼上如下命令:
sudo tee /etc/apt/sources.list.d/ddebs.list << eof
deb $ main restricted universe multiverse
deb $-security main restricted universe multiverse
deb $-updates main restricted universe multiverse
deb $-proposed main restricted universe multiverse
eof
sudo tee /etc/apt/sources.list.d/ddebs.list << eof
deb $ main restricted
deb $-security main restricted
deb $-updates main restricted
deb $-proposed main restricted
eof
ubuntu key認證 :16.04 and higer
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys c8cab6595fdff622
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ecdcad72428d7c01
依次執行
sudo apt-get update -y
sudo apt-get install -y systemtap gcc
sudo apt-get install linux-image-$(uname -r)-dbgsym
驗證systemtap是否安裝成功,正確顯示hello world即安裝成功
stap -e 'probe kernel.function("sys_open") '
安裝問題
中間出現 類似include/linux/compiler-gcc.h:106:30: fatal error: linux/compiler-gcc6.h: no such file or directory
錯誤時 可能是gcc 版本問題可嘗試將gcc 版本降為 4.x
因效能分析工具涉及均為核心操作,工具使用皆需 root 許可權針對高cpu使用率的 nginx worker 分析 (取得程序pid 記為pid)
nginx 程序 資訊抓取
lua 業務**資訊抓取cd -/openresty-systemtap-toolkit
./sample-bt -p 6162 -t 10 -u > /tmp/aa.bt
-t 為取樣時間 -p 跟 pid 預設-u 輸出 aa.bt 檔案
火焰圖圖製作cd -/
export path=$pwd:$path
./samples/lj-lua-stacks.sxx --skip-badvars -x 3467 --arg time=5 > /tmp/lua_aaa.bt
-x為pid --arg time=5 取樣時間 輸出/tmp/lua_aaa.bt
將以上兩個步驟獲取的檔案製作成 瀏覽器可檢視的火焰圖perf 火焰圖生成
cd -/flamegraph
./stackcollapse-stap.pl /tmp/aa.bt > /tmp/aa.cbt
/tmp/aa.bt 輸入檔案
./flamegraph.pl --encoding="iso-8859-1" --title="lua-land on-cpu flamegraph" /tmp/aa.cbt > /tmp/aa.svg
瀏覽器 開啟 aa.svg
其他情況
暫時想寫 請自行嘗試 自行google 自己動手豐衣足食
可閱 或者 工具的相關介紹具體嘗試
nginx lua 效能分析
主要依賴動態追蹤技術實時抓取獲得函式呼叫棧的耗時佔比情況 主要介紹相關工具安裝使用 關於動態追蹤 這有篇看不大懂的blog ngxlua效能分析 systemtap擴充套件 這裡主要用來做luajit2.1的 效能分析 火焰圖svg製作工具 systemtap 安裝 ubuntu 新增ubuntu ...
nginx lua開發例子
參考文章 conf檔案與原來文章的配置有點不同,這個要參考官方文件 vim usr chapter6 nginx chapter6.conf upstream backend server location ad d lua檔案 local redis require resty.redis loc...
nginx lua環境搭建
lua 是乙個小巧的指令碼語言。該語言的設計目的是為了嵌入應用程式中,從而為應用程式提供靈活的擴充套件和定製功能。lua指令碼可以很容易的被c c 呼叫,也可以反過來呼叫c c 的函式,這使得lua在應用程式中可以被廣泛應用。不僅僅作為擴充套件指令碼,也可以作為普通的配置檔案,代替xml,ini等檔...