XHProf を使用して PHP パフォーマンスのボトルネックを分析する方法 2

不言
リリース: 2023-04-02 20:06:02
オリジナル
1884 人が閲覧しました

この記事では、XHProf を使用して PHP のパフォーマンスのボトルネックを分析する 2 番目の方法を主に紹介します。これには、一定の参考値があります。ここで共有します。必要な友人は、前の記事を参照してください。

私たちは、 xhprof 拡張機能に基づいて PHP のパフォーマンスを分析し、それをログに記録し、最後に xhprof 拡張機能に付属する UI を使用して Web 上に表示する方法を紹介しました。この記事では、次の 2 つのナレッジ ポイントについて説明します。

  • xhgui を使用して、xhprof のデフォルト UI インターフェイスを置き換えます。これにより、分析が容易になります。 Tideways は、置換用の xhprof 拡張機能を拡張します

  • より美しい UI を使用します: xhgui

  • xhgui は、XHProf、Uprofiler、または Tideways 拡張機能をサポートします。つまり、これらのいずれかがサポートされています。拡張機能がインストールされているので植えるだけです。

このテストでは、Tideways 拡張機能を実際に使用しました (XHProf 拡張機能に切り替えた後、Web にデータが表示されません。理由は不明です。Uprofiler に切り替えるとデータが表示されません)。

xhprof は Facebook からのものですが、長い間更新されておらず、公式ソースによると、このパッケージは放棄され、メンテナンスされていないことが示されています。 Tideways はその逆で、営利企業が 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

インジェクション ファイルを手動で作成します。 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 のデータを読み取る必要もあります。 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 アドレスがデフォルトでない場合は、変更します。 :

    'db.host' => 'mongodb://127.0.0.1:27017',
ログイン後にコピー

はサンプリング周波数も変更します。デフォルトは 1/100 です。テストする場合は、true に変更してください: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">    'profiler.enable' =&gt; function() {         //return rand(1, 100) === 42;         return true;     },</pre><div class="contentsignin">ログイン後にコピー</div></div>Configuration projectjection

前の記事では、エントリ ファイルは php.ini または nginx で記述できます。nginx 設定に記述することをお勧めします。これは、php 環境を使用するすべてのプロジェクトではなく、nginx に対応するプロジェクトにのみ影響します。エントリ ファイルは、xhgui に付属のインジェクション ファイルを使用します:

jifen.cc.conf

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;
}
ログイン後にコピー

xhgui web の構成

xhprof.test.com.conf を次のように変更します。

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;
    }
    
}
ログイン後にコピー

nginx サービスを再起動します。

アプリケーション インターフェイスを数回リクエストし、ブラウザを開いて http://xhprof.test.com/ と入力すると、次の内容が表示されます。

特定のリクエストをクリックして確認してください。詳細:

XHProf を使用して PHP パフォーマンスのボトルネックを分析する方法 2以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
XHProf を使用して PHP パフォーマンスのボトルネックを分析する方法 2関連する推奨事項:

XHProf を使用して PHP パフォーマンスのボトルネックを分析する方法 1

以上がXHProf を使用して PHP パフォーマンスのボトルネックを分析する方法 2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!