nginx-systemtap-toolkit - 基于 [SystemTap] 为nginx打造的实时分析和诊断工具集
你的linux 系统需要 systemtap 2.1+ 和 perl 5.6.1+ 及以上的版本,可yum安装更新。
如果不是从源码编译的nginx,需要保证nginx和其他依赖组件的 (DWARF)调试信息已经打开了(或者单独安装了)。
需要安装 kernel debug symbols 和 kernel headers。
通常只用在你的 Linux 系统中,安装和kernel包匹配的 kernel-devel、kernel-debuginfo、kernel-debuginfo-common就可以了。
运行基于 systemtap 的工具集需要特别的用户权限。为了避免用 root 用户运行这些工具集,你可以把自己的用户名(非 root 用户)加入用户组中。
如果当前账户名和正在运行的nginx进程的账户名不同,需要运行sudo让这些工具集带有 root 访问权限的运行起来。
基于perl开发工具分析upstream请求和连接,在指定的nginx master 进程的所有nginx worker 进程中的分布。
采样监听端口的syn队列和ack backlog 队列,可用于诊断syn队列和ack backlog队列的溢出经常会导致客户端侧的连接超时错误。
从nginx配置文件中获取监听的端口号:
cat nginx.conf | grep listen | awk '{print $2}' | awk -F':' '{print $2}' | sort | uniq | awk -F';' '{print $1}' | awk 'BEGIN {a=""} {a=a","$0} END {print a}'