>  기사  >  백엔드 개발  >  XHProf를 사용하여 PHP 성능 병목 현상의 인스턴스 찾기

XHProf를 사용하여 PHP 성능 병목 현상의 인스턴스 찾기

小云云
小云云원래의
2017-12-14 10:02:121627검색

성능 병목 현상은 일반적으로 개발자가 새로 개발한 애플리케이션을 나타냅니다.

예:

Java 또는 C로 개발되어 사용자 트랜잭션 요청을 처리하기 위해 애플리케이션 서버에 배포되는 애플리케이션입니다.

예를 들어

한 개발자가 테스트 중

이 결제 처리 프로그램은 사용자가 순차적으로 보낸 동시 결제 요청만 처리할 수 있고 병렬로 처리할 수 없다는 사실이 발견되었습니다. 결제 거래의 처리 응답 시간이 매우 길며, 이때 애플리케이션에 성능 병목 현상이 발생한다고 볼 수 있습니다.

이 기사에서는 XHProf를 사용하여 PHP 성능 병목 현상을 찾는 예제를 공유할 것입니다. 이는 좋은 참고 가치가 있으며 모든 사람에게 도움이 되기를 바랍니다.

XHProf는 PHP 성능을 테스트하기 위해 Facebook에서 개발한 확장 프로그램입니다. 이 기사에서는 XHProf를 사용하여 PHP 성능을 최적화하고 PHP 애플리케이션에서 성능 병목 현상을 찾는 방법을 기록합니다.

1. Xhprof 확장 설치

//github上下载https://github.com/facebook/xhprof
unzip xhprof-master.zip 
cd xhprof-master/extension/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-xhprof
make && make install

2. php.ini 수정

[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp

구성에서 xhprof.output_dir은 생성된 프로필 파일이 저장되는 위치를 지정합니다.

3. 관련 파일을 프로젝트로 이동하세요

//xhprof下载压缩包中的xhprof_html和xhprof_lib
cp -r xhprof-master/xhprof_html /usr/local/nginx/html/xhprof/
cp -r xhprof-master/xhprof_lib /usr/local/nginx/html/xhprof/

도메인 이름을 구성하면 브라우저에서 http://will.com/xhprof/xhprof_html/index.php

server{
 listen 80;
 server_name will.com;
 location / {
  root /usr/local/nginx/html;
  index index.html;
 }
 location ~ \.php$ {
  root html;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include  fastcgi_params;
 }
 }

4에 액세스할 수 있습니다. . 테스트 파일 작성

//需要安装graphviz否则查看性能图片时候会报failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found '
yum -y install graphviz

완전한 코드 예시(랜덤 풀 레드 엔벨로프 데모)

//入口文件的开始位置
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);

业务逻辑...

//业务逻辑结束后
$xhprof_data = xhprof_disable();
include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_lib.php"; 
include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_runs.php"; 
$objXhprofRun = new XHProfRuns_Default();//数据会保存在php.ini中xhprof.output_dir设置的目录去中 
$run_id = $objXhprofRun->save_run($xhprof_data, "test");

6. 분석 결과 보기

먼저 비즈니스 코드를 실행하고

그런 다음 브라우저를 엽니다. http://will.com/xhprof/ xhprof_html/index.php, 마지막으로 xhprof 파일을 생성하려면 클릭하세요.

중간에 있는 전체 호출 그래프 보기 링크를 통해 그래픽 분석 결과를 볼 수 있습니다.

빨간색 부분 그림에서는 낮은 성능과 소비를 보여줍니다. 장기적으로 빨간색으로 표시된 기능을 기반으로 시스템 코드를 최적화할 수 있습니다

또한 xhprof 보고서 필드의 의미:

함수 이름: 메서드 이름.

Calls: 메소드가 호출된 횟수입니다.

Calls%: 동일한 수준의 총 메서드 호출 수에 대한 메서드 호출 수의 백분율입니다.

Incl.Wall Time(마이크로초): 하위 메서드 실행 시간을 포함하여 메서드 실행에 걸리는 시간입니다. (단위: 마이크로초)

IWall%: 메소드 실행에 소요된 시간의 백분율입니다.

Excl. Wall Time(마이크로초): 하위 메소드 실행 시간을 제외하고 메소드 자체를 실행하는 데 걸리는 시간입니다. (단위: 마이크로초)

EWall%: 메소드 자체를 실행하는 데 소요된 시간의 백분율입니다.

CPU 포함(마이크로초): 하위 메서드 실행 시간을 포함하여 메서드 실행에 소요된 CPU 시간입니다. (단위: 마이크로초)

ICpu%: 메서드 실행에 소요된 CPU 시간의 비율입니다.

CPU 제외(마이크로초): 하위 메서드 실행 시간을 제외하고 메서드 자체를 실행하는 데 소요된 CPU 시간입니다. (단위: 마이크로초)

ECPU%: 메서드 자체를 실행하는 데 소요된 CPU 시간의 비율입니다.

Incl.MemUse(bytes): 하위 메서드 실행이 차지하는 메모리를 포함하여 메서드 실행이 차지하는 메모리입니다. (단위: 바이트)

IMemUse%: 메서드 실행에 사용되는 메모리 비율입니다.

Excl.MemUse(bytes): 하위 메서드 실행으로 점유된 메모리를 제외하고 메서드 자체 실행으로 점유된 메모리입니다. (단위: 바이트)

EMemUse%: 메소드 자체 실행에 의해 차지하는 메모리 비율입니다.

Incl.PeakMemUse(바이트): Incl.MemUse 피크 값. (단위: 바이트)

IPeakMemUse%: Incl.MemUse 최대 비율입니다.

Excl.PeakMemUse(바이트): Excl.MemUse 피크 값. 단위: (바이트)

EPeakMemUse%: Excl.MemUse 피크 백분율.

관련 권장 사항:


JavaScript 시작 성능 병목 현상 분석 및 솔루션

xdebug를 사용하여 PHP 프로그램을 분석하고 성능 병목 현상을 찾아보세요

PHP 코드 성능 병목 현상 추적

위 내용은 XHProf를 사용하여 PHP 성능 병목 현상의 인스턴스 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.