最近为了分析公司的一个 nginx + lua 的应用性能,正好需要用到春神的那套 nginx-lua 的分析脚本,因此就立马去搭建下

环境:

  • CentOS 5.8
  • Lua 5.2.3
  • luajit-2.0.3
  • systemtap-2.6
  • nginx

依赖项:

  • systemtap-2.6 依赖于 elfutils

注:CentOS 5.8 上面安装 systemtap-2.6 的时候,elfutils 的版本不能太高,不然会报错,安装 systemtap-2.6 失败,目前使用的版本是 elfutils-0.149

该文的前提是你已经编译安装好了支持 lua 的 nginx 版本,以及你已经安装好了 systemstap 所需的你对应操作系统的 kernel-debug-debuginfo 和 kernel-debuginfo-common,这个版本必须和你的系统的内核版本一模一样,一个字符不一样都不行,查看版本的方法是:

[apps@TEST-APP-011 ~]$ uname -r 2.6.18-308.el5 

所以我对应的版本是:

kernel-debug-debuginfo-2.6.18-308.el5.x86_64.rpm kernel-debuginfo-common-2.6.18-308.el5.x86_64.rpm 

具体的安装步骤可以参考官方文档。

下载安装所需的软件

下载 systemtap-2.6

cd /tmp/ && wget https://sourceware.org/systemtap/ftp/releases/systemtap-2.6.tar.gz --no-check-certificate 

下载 elfutils-0.149

cd /tmp && wget https://fedorahosted.org/releases/e/l/elfutils/0.149/elfutils-0.149.tar.bz2 --no-check-certificate 

安装 systemtap-2.6

  1. 解压 elfutils-0.149

    cd /tmp/ && tar -xvf elfutils-0.149.tar.bz2 
  2. 解压 systemtap-2.6

    cd /tmp && tar -zxvf systemtap-2.6.tar.gz 
  3. 安装 systemtap-2.6

    编译

    cd /tmp/systemtap-2.6 && ./configure --prefix=/opt/stap --disable-docs --disable-publican --disable-refdocs CFLAGS="-g -O2" --with-elfutils=/tmp/elfutils-0.149 

    安装

    make -j8 && make install 
  4. 做软连接

    sudo ln -snf /opt/stap/bin/stap /usr/bin/stap 
  5. 验证命令

    stap -V Systemtap translator/driver (version 2.6/0.149, non-git sources) Copyright (C) 2005-2014 Red Hat, Inc. and others This is free software; see the source for copying conditions. enabled features: LIBRPM LIBSQLITE3 NSS BOOST_SHARED_PTR TR1_UNORDERED_MAP NLS LIBXML2 

注:有时候运行 stap -V 命令的时候会出错,错误如下:

stap: /usr/lib64/libelf.so.1: version `ELFUTILS_1.5' not found (required by stap) stap: /usr/lib64/libdw.so.1: version `ELFUTILS_0.138' not found (required by stap) stap: /usr/lib64/libdw.so.1: version `ELFUTILS_0.142' not found (required by stap) stap: /usr/lib64/libdw.so.1: version `ELFUTILS_0.143' not found (required by stap) stap: /usr/lib64/libdw.so.1: version `ELFUTILS_0.149' not found (required by stap)

解决办法是,执行如下命令:

//查看 stap 的安装路径 [apps@TEST-APP-011 ~]$ eu-readelf -d /usr/bin/stap|grep -E "RPATH|RUNPATH"   RPATH             Library rpath: [/opt/stap/lib/systemtap]   RUNPATH           Library runpath: [/opt/stap/lib/systemtap] 
// 加入环境变量 export LD_LIBRARY_PATH=/opt/stap/lib/systemtap:$LD_LIBRARY_PATH 

使用春神的脚本

下载脚本:

git clone https://github.com/openresty/nginx-systemtap-toolkit.git 

拿其中的一个脚本校验,结果如下:

sudo ./ngx-req-distr -c -m `cat /opt/nginx/sbin/nginx.pid` Tracing 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 (/opt/nginx-lua/sbin/nginx)... worker 5959:    0 reqs, 0 conns worker 5960:    0 reqs, 0 conns worker 5961:    0 reqs, 0 conns worker 5962:    0 reqs, 0 conns worker 5963:    0 reqs, 0 conns worker 5964:    0 reqs, 0 conns worker 5965:    0 reqs, 0 conns worker 5966:    0 reqs, 0 conns worker 5967:    0 reqs, 0 conns worker 5968:    0 reqs, 0 conns worker 5969:    0 reqs, 0 conns worker 5970:    387290 reqs,    15 conns worker 5971:    610857 reqs,    106 conns worker 5972:    0 reqs, 0 conns worker 5973:    0 reqs, 0 conns worker 5974:    21 reqs,        74 conns worker 5975:    0 reqs, 0 conns worker 5976:    531284 reqs,    96 conns worker 5977:    571358 reqs,    213 conns worker 5978:    560546 reqs,    165 conns worker 5979:    629476 reqs,    14297 conns worker 5980:    575010 reqs,    247 conns worker 5981:    650624 reqs,    622 conns worker 5982:    499562 reqs,    249 conns worker 5983:    0 reqs, 0 conns 

软件来源地址

参考阅读

Tags:

CentOS 5.8 上安装 systemtap-2.6的更多相关文章

  1. 在CentOS或RHEL上安装Nux Dextop仓库

    介绍 Nux Dextop是类似CentOS.RHEL.ScientificLinux的第三方RPM仓库(比如:Ardour,Shutter等等).目前,Nux Dextop对CentOS/RHEL ...

  2. CentOS 6.5上安装MySQL-Cluster

    参考博文: CentOS 6.2下MySQL Cluster 7.2 配置数据库集群 CentOS 6.5上安装MySQL-Cluster 7.3.4过程笔记--下一步学习 MySQL Cluster ...

  3. CentOS 6.9上安装mysql-5.6.36

    CentOS 6.9上安装mysql-5.6.36 1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/data,而后需要创建/da ...

  4. 记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb

    记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb 前段时间我个人Google服务器意外不能用,并且我犯了一件很低级的错误,直接在gcp讲服 ...

  5. [转]在Linux CentOS 6.6上安装Python 2.7.9

    在Linux CentOS 6.6上安装Python 2.7.9 查看python安装版本 python -V yum中最新的也是Python 2.6.6,所以只能下载Python 2.7.9的源代码 ...

  6. 在 CentOS 7.2 上安装 ODOO 10 (2018-10-09 持续更新)

    在 CentOS 7.2 上安装 ODOO 10 更新系统 yum update 安装 EPEL 源 1 yum install -y epel-release 安装依赖组件 yum install ...

  7. CentOS 6.9上安装mysql-5.6.37

    CentOS 6.9上安装mysql-5.6.37 1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/data,而后需要创建/da ...

  8. CentOS 6.9上安装Mysql 5.7.18 安装

    CentOS 6.9上安装Mysql 5.7.18 安装 下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-g ...

  9. 在 CentOS 6.4上安装Erlang

    如何在CentOS 6.4上安装erlang,具体的Erlang版本是R15B03-1. 在安装之前,需要先要安装一些其他的软件,否则在安装中间会出现一些由于没有其依赖的软件模块而失败. 一开始,要是 ...

  10. CentOS 6.5上安装GlassFish4.0 过程笔记

    CentOS 6.5上安装GlassFish4.0 过程笔记 1.安装JDK, 注意操作系统的位数, 64 or 32: [root@linuxidc ~]# mkdir /usr/java  [ro ...

随机推荐

  1. IIS 配置 SVC

    IIS8中添加WCF支持几种方法小结[图文] 方法一 最近在做Silverlight,Windows Phone应用移植到Windows 8平台,在IIS8中测试一些传统WCF服务应用,发现IIS8不 ...

  2. 把datagrid转换成gridview

    public gridview datagrid2gridview(datagrid dg) { gridview gv = new gridview(); foreach(var p in dg.c ...

  3. 常用animation动画

    /*编辑动画名*/ animation-name: myDemo; /*动画持续时间*/ animation-duration: 6s; /*动画方向*/ /*reverse 反向*/ /*alter ...

  4. tp5.0分页样式调控

    基础的分页调用 /** * 控制器部分代码 */ //实例化模型 $areasModel=new Areas(); //分页数据集 $listarea=$areasModel->paginate ...

  5. jQuery——节点操作

    创建节点 1.$():创建一个li标签 $("<li class='aaa'>我是li标签</li>") 2.html():创建一个li标签并同时添加到ul ...

  6. JS——tab切换

    排它思想: 1.先让所有的元素恢复默认值 2.再让选中的元素赋专有的值 3.干掉所有人,剩下我一个 <!DOCTYPE html> <html> <head lang=& ...

  7. [Windows Server 2012] 服务器安全加固

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:服务器安全加固 ...

  8. Java_Web三大框架之Hibernate+HQL语言基础

    12.1 HQL语言基础Hibernate查询语言为HQL(Hibernate Query Language),可以直接使用实体类名及属性.HQL语法类似于SQL,有SQL的关键词如select.fr ...

  9. java实现搜索附近地点或人的功能

    前言 当前大多数app都有查找附近的功能, 简单的有查找周围的运动场馆, 复杂的有滴滴, 摩拜查找周围的车辆. 本文主要阐述查找附近地点的一般实现. 方案比较 方案1 (性能还不错) 数据库直接存经纬 ...

  10. 怎样用Fiddler模拟网络超时

    转自:http://materliu.github.io/all/web/2014/04/28/fiddler-timeout.html   用fiddler模拟网络请求超时 用fiddler模拟网络 ...