>백엔드 개발 >PHP 튜토리얼 >XHProf를 사용하여 PHP 성능 병목 현상을 분석하는 방법 2

XHProf를 사용하여 PHP 성능 병목 현상을 분석하는 방법 2

不言
不言원래의
2018-07-07 15:38:221997검색

이 글에서는 주로 XHProf를 사용하여 PHP 성능 병목 현상을 분석하는 두 번째 방법을 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.

이전 글에서 사용법을 소개했습니다. xhprof는 PHP 성능 병목 현상을 분석하고, 이를 로그에 기록하고, 마지막으로 xhprof 확장과 함께 제공되는 UI를 사용하여 이를 웹에 표시하는 확장입니다. 이 기사에서는 2가지 지식 포인트에 대해 설명합니다:

  • xhgui를 사용하여 xhprof의 기본 UI 인터페이스를 대체하여 분석하기 더 쉽습니다.

  • ideways 확장을 사용하여 xhprof 확장을 대체합니다.

더 아름다운 UI를 사용합니다. xhgui

xhgui XHProf, Uprofiler 또는 Tideways 확장을 지원합니다. 즉, 이러한 확장 중 하나가 설치되어 있는 경우입니다.

이번 테스트에서는 실제로 Tideways Extension을 사용했습니다(XHProf Extension으로 전환한 후 웹에서 데이터가 보이지 않아 이유를 알 수 없습니다. Uprofiler로 전환하면 데이터가 없습니다.).

xhprof는 facebook에서 제공되지만 오랫동안 업데이트되지 않았습니다. 공식 소스에 따르면 이 패키지는 폐기되었으며 더 이상 유지 관리되지 않습니다. Tideways는 정반대입니다. 상업 회사에서는 이를 유지하고 PHP7을 적극적으로 지원해 왔습니다. 두 확장 모두 오픈 소스입니다. 요약하면 코드 분석을 위해 Tideways를 선택하는 것이 좋습니다.

tideways 확장 설치:

wget https://github.com/tideways/php-xhprof-extension/archive/v4.1.5.tar.gz -O php-xhprof-extension-4.1.5.tar.gz
tar xzf /php-xhprof-extension-4.1.5.tar.gz 
cd php-xhprof-extension-4.1.5 
phpize  
./configure
make && make install

xhgui 설치

cd  /work/
git clone https://github.com/perftools/xhgui.git xhgui

중국어 인터페이스를 설치해야 하는 경우 다음을 수행할 수 있습니다.

git clone https://github.com/laynefyc/xhgui-branch.git  xhgui

그런 다음 xhgui 종속성을 설치합니다.

cd xhgui
php install.php

설치에는 몇 분이 소요됩니다. 잠시 기다려 주십시오. .

캐시 디렉토리의 권한을 설정하고 nginx가 파일을 생성하도록 허용합니다.

chmod -R 777

xhgui는 이미 external/header.php에 있는 모든 주입 항목 파일을 작성했습니다. 수동으로 수행할 필요가 없습니다. 이전 기사 xhprof.inc.php 주입 파일과 비슷하게 작성하세요. external/header.php,无需我们手动去写类似上一篇的xhprof.inc.php注入文件。

安装MongoDB及客户端

xhgui 把日志写到了MongoDB,所以使用xhgui需要安装MongoDB服务端。此处省略安装、启动MongoDB服务端过程。

为提高 MongoDB 的性能,你可以运行以下指令以添加索引:

$ /usr/local/mongodb/bin/mongo
> use xhprof
db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )  
db.results.ensureIndex( { 'profile.main().wt' : -1 } )  
db.results.ensureIndex( { 'profile.main().mu' : -1 } )  
db.results.ensureIndex( { 'profile.main().cpu' : -1 } )  
db.results.ensureIndex( { 'meta.url' : 1 } )

同理,由于xhgui是PHP写的,还需要读取MongoDB里的数据,需要安装MongoDB php 客户端:

pecl install mongodb

然后在php.ini文件添加配置:

[mongo]
extension=mongo.so

查看扩展是否安装成功:

php -m | grep mongo

然后重启php-fpm服务。

配置xhgui

xhgui的config目录有一个config.default.php,复制为config.php

MongoDB 및 클라이언트 설치

xhgui는 MongoDB에 로그를 기록하므로 xhgui를 사용하려면 MongoDB 서버를 설치해야 합니다. 여기서는 MongoDB 서버를 설치하고 시작하는 과정을 생략합니다.

MongoDB의 성능을 향상하려면 다음 명령을 실행하여 인덱스를 추가할 수 있습니다:

    'db.host' => 'mongodb://127.0.0.1:27017',
마찬가지로 xhgui는 PHP로 작성되었으며 MongoDB에서 데이터를 읽어야 하므로 MongoDB PHP 클라이언트를 설치해야 합니다.

    'profiler.enable' => function() {
        //return rand(1, 100) === 42;
        return true;
    },
그런 다음 php.ini 파일에 구성을 추가하세요:

location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param PHP_VALUE "auto_prepend_file=/work/xhgui/external/header.php";
    include        fastcgi_params;
}

확장이 성공적으로 설치되었는지 확인하세요:

server {
    listen       80;
    server_name  xhprof.test.com;

    #root /work/xhprof/xhprof_html;
    root /work/xhgui/webroot/;
    index index.php index.html;
    
    location / {
       if (!-e $request_filename) {
            rewrite . /index.php last;
        }
    }

    location ~ \.php$ {
        
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
}
그런 다음 php-fpm 서비스를 다시 시작하세요.

Configure xhgui

xhgui의 config 디렉토리에는 config.default.php가 있습니다. 이를 config.php로 복사하고, mongodb 주소가 기본값이 아닌 경우 다음을 수정하세요.

rrreeeXHProf를 사용하여 PHP 성능 병목 현상을 분석하는 방법 2또한 수정하세요. 샘플링 주파수, 기본값은 1/100입니다. 테스트하면 true로 변경합니다.
rrreeeXHProf를 사용하여 PHP 성능 병목 현상을 분석하는 방법 2Configuration projectjection

이전 글에서는 인젝션 항목 파일을 php.ini 또는 nginx로 작성할 수 있다고 소개했습니다. nginx 구성으로 작성하는 것이 좋습니다. 따라서 php 환경을 사용하는 모든 프로젝트가 아닌 nginx에 해당하는 프로젝트에만 영향을 미칩니다. 항목 파일은 xhgui와 함께 제공되는 주입 파일을 사용합니다:

jifen.cc.conf

rrreee

Configure xhgui webxhprof.test.com.conf를 다음과 같이 수정합니다:

rrreee애플리케이션 인터페이스를 여러 번 요청하고 브라우저를 열고 http://xhprof.test.com/에 입력하면 다음을 볼 수 있습니다. 🎜🎜🎜특정 요청을 클릭하면 세부 정보를 볼 수 있습니다. 🎜🎜🎜🎜위 내용은 다음과 같습니다. 이 글의 전체 내용이 모든 분들의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용을 보시려면 PHP 중국어 웹사이트를 주목해주세요! 🎜🎜관련 권장 사항: 🎜🎜🎜XHProf를 사용하여 PHP 성능 병목 현상을 분석하는 방법 1🎜🎜🎜🎜🎜

위 내용은 XHProf를 사용하여 PHP 성능 병목 현상을 분석하는 방법 2의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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