nginx lua 效能分析

2021-10-10 05:55:00 字數 2653 閱讀 5619

主要依賴動態追蹤技術實時抓取獲得函式呼叫棧的耗時佔比情況

主要介紹相關工具安裝使用

關於動態追蹤 這有篇看不大懂的blog 

ngxlua效能分析

systemtap擴充套件 這裡主要用來做luajit2.1的**效能分析

火焰圖svg製作工具

systemtap 安裝(ubuntu)

新增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 程序 資訊抓取

cd -/openresty-systemtap-toolkit

./sample-bt -p 6162 -t 10 -u > /tmp/aa.bt-t 為取樣時間 -p 跟 pid 預設-u 輸出 aa.bt 檔案

lua 業務**資訊抓取

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

火焰圖圖製作

將以上兩個步驟獲取的檔案製作成 瀏覽器可檢視的火焰圖

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

perf 火焰圖生成

其他情況

暫時想寫 請自行嘗試 自行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等檔...