ホームページ  >  記事  >  バックエンド開発  >  XHProf を使用して PHP パフォーマンスのボトルネックのインスタンスを見つける

XHProf を使用して PHP パフォーマンスのボトルネックのインスタンスを見つける

小云云
小云云オリジナル
2017-12-14 10:02:121586ブラウズ

パフォーマンスのボトルネックは通常、開発者によって新しく開発されたアプリケーションを指します。

例:

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.output_dir に、生成されたプロファイル ファイルが保存される場所を指定します。

3. 関連ファイルをプロジェクトに移動します

[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp
ドメイン名を設定すると、ブラウザは http://will.com/xhprof/xhprof_html/index.php

//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/
4 をインストールします。テスト ファイルを作成します

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;
 }
 }
完全なコード例 (ランダムな完全な赤い封筒のデモ)

//需要安装graphviz否则查看性能图片时候会报failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found '
yum -y install graphviz
6. 分析結果を表示します

最初にビジネス コードを実行します。

次にブラウザ http://will.com/xhprof/ を開きます。 xhprof_html/index.php、クリックして最後に xhprof ファイルを生成します

中央にある [View Full Callgraph] リンクに注目してください。ここから、グラフィカルな分析結果を確認できます

図はパフォーマンスと消費量が低いことを示しています。長い部分では、どの関数が赤でマークされているかに基づいてシステム コードを最適化できます

さらに、xhprof レポート フィールドの意味:

関数名: メソッド名。

Calls: メソッドが呼び出された回数。

Calls%: 同じレベルでのメソッド呼び出しの合計数に対するパーセンテージとしてのメソッド呼び出しの数。

Incl.Wall Time (microsec): サブメソッドの実行時間を含む、メソッドの実行にかかる時間。 (単位: マイクロ秒)

IWall%: メソッドの実行に費やされた時間の割合。

Excl. Wall Time (microsec): サブメソッドの実行時間を除く、メソッド自体の実行にかかる時間。 (単位: マイクロ秒)

EWall%: メソッド自体の実行に費やされた時間の割合。

CPU を含む (マイクロ秒): サブメソッドの実行時間を含む、メソッドの実行に費やされた CPU 時間。 (単位: マイクロ秒)

ICpu%: メソッドの実行に費やされた CPU 時間の割合。

CPU を除く (マイクロ秒): サブメソッドの実行時間を除く、メソッド自体の実行に費やされた CPU 時間。 (単位: マイクロ秒)

ECPU%: メソッド自体の実行に費やされた CPU 時間の割合。

Incl.MemUse(bytes): メソッドの実行によって占有されるメモリ (サブメソッドの実行によって占有されるメモリを含む)。 (単位: バイト)

IMemUse%: メソッドの実行によって占有されているメモリの割合。

Excl.MemUse(bytes): サブメソッドの実行によって占有されるメモリを除く、メソッド自体の実行によって占有されるメモリ。 (単位: バイト)

EMemUse%: メソッド自体の実行によって占有されるメモリの割合。

Incl.PeakMemUse(バイト): Incl.MemUse ピーク値。 (単位: バイト)

IPeakMemUse%:MemUse ピークの割合を含みます。

Excl.PeakMemUse(バイト): Excl.MemUse ピーク値。単位: (バイト)

EPeakMemUse%: Excl.MemUse ピークのパーセンテージ。

関連する推奨事項:


JavaScript 起動時のパフォーマンスのボトルネックの分析と解決策

xdebug を使用して PHP プログラムを分析し、パフォーマンスのボトルネックを見つける

PHP コードのパフォーマンスのボトルネックを追跡する

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。