PHP 拡張機能 XHProf を使用して、関数レベルのパフォーマンス監視を実装します。
XHProfの公式説明を引用:
XHProf は、PHP 用の関数レベルの階層プロファイラーであり、生のデータ収集コンポーネントは (PHP 拡張機能として) C で実装されており、すべて PHP で実行できます。関数レベルの包括的および排他的なウォールタイム、メモリ使用量、CPU 時間、各関数の呼び出し数をレポートします。さらに、2 つの実行 (階層的な DIFF レポート) を比較したり、複数の実行からの結果を集計したりする機能もサポートしています。
ブロック時間、メモリ使用量、CPU 時間を含む呼び出し数などの関数レベルのパフォーマンス情報を提供します。
1. インストールと設定
/data/software # wget http://pecl.php.net/get/xhprof-0.9.2.tgz
/data/software # tar zxvf xhprof-0.9.2.tgz
/data/software # cd xhprof-0.9.2/
/data/software/xhprof-0.9.2 # ls -alp
合計 968
drwxr-xr-x 6 ルート ルート 4096 2013-03-18 09:09 ./
drwxr-xr-x 47 ルート ルート 8192 2013-03-18 09:09 ../
-rw-r--r-- 1 1425 ユーザー 3359 2009-06-02 01:52 変更履歴
-rw-r--r-- 1 1425 ユーザー 266 2009-06-02 01:52 クレジット
drwxr-xr-x 2 root root 4096 2013-03-18 09:09 例/ # デモ
drwxr-xr-x 8 root root 4096 2013-03-18 09:09 extension/ # pecl
-rw-r--r-- 1 1425 ユーザー 10174 2009-06-02 01:52 ライセンス
-rw-r--r-- 1 1425 ユーザー 186 2009-06-02 01:52 README
-rw-r--r-- 1 ルート root 931660 2009-06-02 01:55 xhprof
drwxr-xr-x 6 root root 4096 2013-03-18 09:09 xhprof_html/ # 組み込みインターフェースパッケージ
drwxr-xr-x 4 root root 4096 2013-03-12 15:40 xhprof_lib/ # 関数ライブラリ
/data/software/xhprof-0.9.2 # cd 拡張子/
/data/software/xhprof-0.9.2/extension #phpize
/data/software/xhprof-0.9.2/extension # ./configure --with-php-config=/usr/local/services/php/bin/php-config --enable-xhprof
/data/software/xhprof-0.9.2/extension #make
/data/software/xhprof-0.9.2/extension #make install
共有拡張機能のインストール: /usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/
/data/software/xhprof-0.9.2/extension # cp /usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/xhprof.so /usr/local/services/ php/extensions/
# 生成された xhprof.so を extension_dir ディレクトリにコピーし、php.ini を設定し、php-fpm またはサーバーを再起動します
//php.ini
[xhprof]
拡張子=xhprof.so
xhprof.output_dir="/data/logs/servers/xhprof"
# xhprof がロードされているかどうかを確認します
/data/software/xhprof-0.9.2/extension # php -m|grep xhprof
xhprof
2. パフォーマンス分析とロギング
まず、XHProf を有効にしてリクエストの 10 分の 1 のパフォーマンス分析ログを記録します (ログは /data/logs/servers/xhprof に記録されます)。
$xhprofEnabled = FALSE;
if(extension_loaded('xhprof') && mt_rand(1, 10) === 1) { // リクエストのパフォーマンスの 10 分の 1 を分析します
// パフォーマンス監視をオンにする
xhprof_enable(/*XHPROF_FLAGS_CPU + */XHPROF_FLAGS_MEMORY + XHPROF_FLAGS_NO_BUILTINS );
$xhprofEnabled = TRUE;
}
次に、リクエスト終了時に XHProf パフォーマンス分析ログが記録されるようにリクエスト終了ハンドラーを登録します。
関数 profile_record() {
if(isset($GLOBALS['xhprofEnabled']) && $GLOBALS['xhprofEnabled']) {
$xhprof_data = xhprof_disable();
$path = $_SERVER['PHP_SELF'];
if($pos = strpos($path, '/htdocs')) {
$path = substr($path, $pos+7);
}
$basename = str_replace(array('.', '/'), '_', ltrim($path, '/'));
/* 公式デモ。ダウンロード パッケージの xhprof-0.9.2/examples/sample.php を参照してください
* //
* // XHProf の実行を保存します
* // iXHProfRuns.
のデフォルト実装を使用します。
* //
* include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
* include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
* $xhprof_runs = new XHProfRuns_Default();
*/
$xhprof_runs = new HWSL_XhProfRuns();
// 異なるバージョン間のパフォーマンスの違いの比較を容易にするために、ログを記録するときに時間カットオフを導入します
$run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof_itravel_'.$basename.'_'.date('YmdHis'));
}
}
register_shutdown_function('profile_record');
生成されたログは、xhprof.output_dir="/data/logs/servers/xhprof" にファイルとして保存されます
生成されたログ ファイルの命名規則は次のとおりです: .
名前空間 の命名規則は次のように定義されます: 'xhprof_itravel_'.$basename.'_'.date('YmdHis')
$basename は対応するファイルの場所を記録し、date('YmdHis') は現在のタイムスタンプを記録して、同じファイルの異なるバージョン間のパフォーマンスの違いを比較します。
3. ログ分析
次に、公式ユーザー インターフェイス パッケージ xhprof-0.9.2/xhprof_html/ を通じて実行レポートを表示します。
run_id が 名前空間が であるレポートを表示するには、次の URL にアクセスしてください。
各列の意味は次のとおりです:
包括時間 (またはサブツリー実行時間): サブツリー実行時間を含むすべての実行時間。
独占時間/セルフ時間: 関数の実行自体に費やされた時間。サブツリーの実行時間は除きます。
実時間: 経過時間または実時間とも呼ばれます。 www.2cto.com
CPU 時間: ユーザー空間の CPU 時間 + カーネル空間の CPU 時間。
グラフィカルなパフォーマンス分析レポートを表示することもできます (強調表示されたパスは、関数呼び出しスタック内の最大のパフォーマンス損失パスを直感的に反映しています)。
4.多読
本番環境でPHPパフォーマンステストツールXHProfを使用する
XHProf の使用法を改善するためのアイデア
XHProf ファイル (ドラフト)
http://www.bkjia.com/PHPjc/477642.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477642.html技術記事 PHP 拡張機能 XHProf を使用して、関数レベルのパフォーマンス監視を実装します。 XHProf の公式説明を引用します: XHProf は PHP 用の関数レベルの階層プロファイラーであり、シンプルな HTML ベースのナビを備えています...