CentOS 5.8 에 systemtap - 2.6 설치

최근 회사 의 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 버 전 을 컴 파일 하고 시스템 stap 에 필요 한 운영 체제 kernel-debug-debuginfokernel-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 설치
  • 스트레스 해소 elfutils - 0.149
    cd /tmp/ && tar -xvf elfutils-0.149.tar.bz2
    
  • 압축 풀기 systemtap - 2.6
    cd /tmp && tar -zxvf systemtap-2.6.tar.gz
    
  • 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
    
  • 소프트 연결
    sudo ln -snf /opt/stap/bin/stap /usr/bin/stap
    
  • 검증 명령
    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
    

    소프트웨어 원본 주소
  • https://fedorahosted.org/releases/e/l/elfutils/0.149/
  • https://github.com/openresty/nginx-systemtap-toolkit#sample-bt
  • http://debuginfo.centos.org/5/x86_64/

  • 참고 읽 기
  • https://github.com/openresty/nginx-systemtap-toolkit#sample-bt
  • http://m.blog.csdn.net/blog/hubaolin/18146413
  • 좋은 웹페이지 즐겨찾기