이 글에서는 주로 XHProf를 사용하여 PHP 성능 병목 현상을 분석하는 두 번째 방법을 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
이전 글에서 사용법을 소개했습니다. xhprof는 PHP 성능 병목 현상을 분석하고, 이를 로그에 기록하고, 마지막으로 xhprof 확장과 함께 제공되는 UI를 사용하여 이를 웹에 표시하는 확장입니다. 이 기사에서는 2가지 지식 포인트에 대해 설명합니다:
xhgui를 사용하여 xhprof의 기본 UI 인터페이스를 대체하여 분석하기 더 쉽습니다.
ideways 확장을 사용하여 xhprof 확장을 대체합니다.
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
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
注入文件。
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的config目录有一个config.default.php,复制为config.php
'db.host' => 'mongodb://127.0.0.1:27017',
'profiler.enable' => function() { //return rand(1, 100) === 42; return true; },
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; } }
config.php
로 복사하고, mongodb 주소가 기본값이 아닌 경우 다음을 수정하세요. rrreee또한 수정하세요. 샘플링 주파수, 기본값은 1/100입니다. 테스트하면 true로 변경합니다.
rrreeeConfiguration projectjection
이전 글에서는 인젝션 항목 파일을 php.ini 또는 nginx로 작성할 수 있다고 소개했습니다. nginx 구성으로 작성하는 것이 좋습니다. 따라서 php 환경을 사용하는 모든 프로젝트가 아닌 nginx에 해당하는 프로젝트에만 영향을 미칩니다. 항목 파일은 xhgui와 함께 제공되는 주입 파일을 사용합니다:
jifen.cc.conf
rrreeeConfigure xhgui webxhprof.test.com.conf를 다음과 같이 수정합니다:
rrreee 애플리케이션 인터페이스를 여러 번 요청하고 브라우저를 열고 http://xhprof.test.com/에 입력하면 다음을 볼 수 있습니다. 🎜🎜🎜특정 요청을 클릭하면 세부 정보를 볼 수 있습니다. 🎜🎜🎜🎜위 내용은 다음과 같습니다. 이 글의 전체 내용이 모든 분들의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용을 보시려면 PHP 중국어 웹사이트를 주목해주세요! 🎜🎜관련 권장 사항: 🎜🎜🎜XHProf를 사용하여 PHP 성능 병목 현상을 분석하는 방법 1🎜🎜🎜🎜🎜위 내용은 XHProf를 사용하여 PHP 성능 병목 현상을 분석하는 방법 2의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!