> 백엔드 개발 > PHP7 > 본문

php7에서 xhprof 분석을 사용하는 방법

醉折花枝作酒筹
풀어 주다: 2023-02-18 06:30:02
앞으로
1486명이 탐색했습니다.

이 글에서는 php7에서 xhprof 분석을 사용하는 방법을 소개하겠습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

php7에서 xhprof 분석을 사용하는 방법

이 문서는 나중에 필요하면 언제든지 찾아볼 수 있습니다. 분석을 위해 xhprof를 사용하여 코드 테스트 및 비교 분석을 용이하게 합니다(php7 지원). 미리 테스트 환경

docker run -it -p 80:80 -v /Users/xxx/Desktop/xhprof:/data phalcon /bin/bash
로그인 후 복사

코드 복사

1. xhprof 설치

php7을 지원하는 xhprof가 꽤 많이 있습니다. 여기서는 github.com/longxinH/xh... 이 프로젝트를 사용합니다.

1.1 프로젝트 가져오기

git clone https://github.com/longxinH/xhprof.git
로그인 후 복사

코드 복사

1.2 프로젝트 설치

cd xhprof/extension/
/usr/server/php7/bin/phpize
./configure --with-php-config=/usr/server/php7/bin/php-config
make && make install
로그인 후 복사

1.3 xhprof.so 확장 추가

마지막으로 실행 후 이 so 파일을 php.ini 구성에 도입해야 합니다

View php.ini 파일 경로

/usr/server/php7/bin/php --ini
 
Configuration File (php.ini) Path: /usr/server/php7/etc
Loaded Configuration File: /usr/server/php7/etc/php.ini
Scan for additional .ini files in: /usr/server/php7/etc/php
Additional .ini files parsed: (none)
로그인 후 복사
编辑 /usr/server/php7/etc/php.ini
[Xhprof]
extension=xhprof.so
xhprof.output_dir=/data/logs
로그인 후 복사

php-fpm을 다시 시작하세요.

2. xhprof를 사용하여 케이스를 구축하는 과정은

축약됩니다

모니터링할 로직 앞에 다음 코드를 삽입합니다

\xhprof_enable();
......
$order = new OrderAdepter();
$result = $order->getUserOrderByOrderNo(123);
......
$xhprof_data = \xhprof_disable();
print_r($xhprof_data);
로그인 후 복사

output:

xhprof 확장에서 두 가지 함수를 발견했습니다. 호출되었으며 출력 값의 의미

ct는 이 함수에 대한 현재 호출 횟수를 나타냅니다. 이 경우

wt는 함수 실행 시간(마이크로초)을 나타냅니다. 예를 들어, 우리는 종종 점유된 메모리, CPU 및 기타 지표에 주의를 기울입니다.

XHPROF_FLAGS_NO_BUILTINS는 내장 함수를 계산하지 않습니다. 이 출력은 확장의 함수가 무시되었음을 확인하여

통계 메모리 사용량 필드에 mu와 pmu라는 두 가지 출력이 있음을 발견했습니다. 사용된 메모리(바이트), pmu는 최대 메모리 사용량(바이트)을 나타냅니다.

3. Chart xhprof

    물론 차트 형식을 통해 성능 병목 현상을 보다 직관적으로 관찰할 수 있기를 바랍니다.
  1. 3.1 이때 xhprof_lib 라이브러리를 사용해야 합니다.

  2. xhprof 소스 코드를 다운로드합니다. 이때 디렉토리에는 이미
  3. \xhprof_enable(
    XHPROF_FLAGS_MEMORY
    +XHPROF_FLAGS_CPU
    +XHPROF_FLAGS_NO_BUILTINS
    );
    로그인 후 복사

    가 포함되어 있습니다. 실행하면 파일 식별자로 이해할 수 있는 문자열이 인쇄됩니다. . save_run 메소드가 실행된 것을 발견했는데, 어디에 저장되어 있나요?

  4. xhprof를 도입한 것을 아직도 기억하시나요? 그럼 확장 중에 다른 구성이 있습니까?
  5. 예, xhprof.output_dir에서 구성한 경로 아래에 있습니다. 직접 디렉토리를 생성하세요)

저희가 분석한 내용 중 일부가 여기에 저장되어 있습니다.

3.2 별도의 서비스를 구성해 보세요. 분석 결과에 액세스하세요

우리는 xhprof 프로젝트의 xhprof_html 디렉토리를 가리킵니다

여기에서 우리의 요점을 이해하셨으리라 믿습니다. run_id와 save_run에서 프로젝트의 역할은

맨 위 부분입니다 는 요청된 인터페이스 표시기에 대한 개요이며 다음은 호출된 각 기능의 구체적인 실행입니다.

필드 이름 의미: 호출 수 호출 포함 벽 시간 호출에는 마이크로초 단위로 계산된 하위 함수 실행 시간이 포함됩니다. 하위 트리 실행 시간을 제외하고 함수 자체 실행에 소요된 시간입니다. CPU 포함 호출에는 하위 함수 Excl이 사용한 모든 CPU 시간이 포함됩니다. 하위 트리 실행 시간은 제외됩니다. 하위 함수 실행(바이트 단위로 측정) Excl.MemUse 함수 실행 자체의 메모리(바이트), Incl.PeakMemUseIncl.MemUse의 피크 값, Excl.PeakMemUseExcl.MemUse

나머지 % 엔딩은 다음과 같습니다. 해당 비율

3.3 [전체 호출 그래프 보기]

다음 두 줄의 코드를 실행하여 설치할 수도 있습니다

\xhprof_enable(XHPROF_FLAGS_MEMORY + XHPROF_FLAGS_CPU+XHPROF_FLAGS_NO_BUILTINS);
 
......
$order = new OrderAdepter();
$result = $order->getUserOrderByOrderNo(123);
......
 
$xhprof_data = \xhprof_disable();
 
include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_lib.php';
include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_runs.php';
$xhprof_runs = new \XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'your_project');
echo $run_id; //output 5cbf25e21fe9b
로그인 후 복사
호출 프로세스를 보려면 graphviz 그래픽 라이브러리를 수동으로 설치하는 것이 좋습니다. graphviz 2.24.0 버전 설치 (개인적으로는 함정, 2.40은 지원하지 않음)

yum install -y libpng
yum install -y graphviz
로그인 후 복사

빨간색 부분 노란색 부분만 분석하고 싶으시다면 메서드를 클릭한 다음 [전체 호출 그래프 보기]를 클릭하여 차트를 확인하세요

4. 문제

위에서 xhprof를 사용했을 때 발견했습니다. 강한 종속성, xhprof 설치 패키지의 여러 클래스가 코드에 도입되었습니다.

yum -y install libtool-ltdl-devel
 
cd /data/graphviz-2.24.0
 
./configure
make
make install
로그인 후 복사
여기서 동일한 기능을 달성하기 위해 작곡가 패키지 참조를 사용할 수 있으며, pbweb/xhprof 패키지를 도입하는 것이 좋습니다.

추천 학습:

php 비디오 튜토리얼

위 내용은 php7에서 xhprof 분석을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿