ホームページ バックエンド開発 PHPチュートリアル PHPパフォーマンステストツールxhprofを本番環境で使用した場合を基に詳しく説明 ゲームパフォーマンステストツール Webパフォーマンステストツール ネットワークパフォーマンステストツール

PHPパフォーマンステストツールxhprofを本番環境で使用した場合を基に詳しく説明 ゲームパフォーマンステストツール Webパフォーマンステストツール ネットワークパフォーマンステストツール

Jul 29, 2016 am 08:48 AM

この記事は、実稼働環境での PHP パフォーマンス テスト ツール xhprof の使用についての詳細な分析と紹介です。必要な方は参考にしてください。

xhprof は、Facebook によってオープンソース化された PHP パフォーマンス テスト ツールです。プロフィールツールと呼ばれますが、この言葉をどのように翻訳して意味を表現するかわかりません。以前使用していた xdebug と比較すると、多くの類似点があります。以前、参考になる xdebug の記録がいくつかありましたが、profiler_enable_trigger パラメータをオンにしても、本番環境で使用するとパフォーマンスに大きな影響を与えるという欠点がありました。 CPU はすぐに High に達します。
xhprof は非常に軽量で、プロファイルを記録するかどうかをプログラムで制御できるため、本番環境でも使用することが可能になります。そのような使用法はドキュメントで確認できます:
10,000 分の 1 の確率で xhprof を有効にし、通常は静かに撮影しません。

コードをコピーしますコードは次のとおりです:


if (mt_rand(1, 10000) == 1) {
xhprof_enable(XHPROF_FLAGS_MEMORY);
$xhprof_on = true;
}


プログラムの最後に、プロファイルを保存するメソッドを呼び出します

コードをコピーします コードは次のとおりです:


if ($xhprof_on) {
// プロファイラーを停止します
$xhprof_data = xhprof_disable( );
// $xhprof_data をどこか (中央 DB など) に保存します
...
}


register_shutdown_function メソッドを使用して、プログラムの最後に xhprof 情報を保存するように指定することもできるため、最後に判断します。 書き換えの不完全な例を次に示します。

コードをコピーします コードは次のとおりです:


if (mt_rand(1, 10000) == 1) {
data;") ) ;
}

ログに関しては、最も原始的なファイル形式を一時的に使用して保存し、定期的に消去するだけです。
ところで: xhprof によって生成されたグラフィカルなプロファイルは非常に優れており、どのコード部分がボトルネックになっているかが一目でわかります。
by phpe: 以下に例を示します:

PHPパフォーマンステストツールxhprofを本番環境で使用した場合を基に詳しく説明 ゲームパフォーマンステストツール Webパフォーマンステストツール ネットワークパフォーマンステストツール xhprof の使用改善に関するアイデア
xhprof が昨年本番環境で使用されて以来、本番環境でのプログラムのデバッグとパフォーマンスの最適化に非常に便利になりました。ただし、使用中に改善が必要な点がいくつかあります。

問題
xhprof のプロファイル ログは、ファイルの形式で運用サーバーに直接保存されます。ログを表示するには、定期的にクリーンアップするか、収集してツール マシンに移動する必要があります。
xhprof によって生成されたプロファイルは大きな配列であるため、ファイルに保存する際には標準の php シリアル化が使用され、ログ ファイルは比較的大きく、注意しないとサーバーのディスク領域を大量に占有する可能性があります。
ログリストを表示するときに、それぞれをクリックするのは困難です。
これらの質問に答えて、いくつかの小さなアイデアがあります。

ログストレージ
中央ログサーバーを展開し、Facebook のスクライブを使用してログを収集します。運用環境のサーバーによって生成された xhprof ログはスクライブ クライアントに書き込まれ、クライアントはローカル ストレージ領域を占有することなく、中央ログ サーバー上のスクライブに自動的に同期します。コードの変更も比較的小規模で、iXHProfRuns インターフェイスに基づいて XhprofRuns クラスを実装し、save_run メソッドのストレージ メソッドを調整するだけです。

シリアル化メソッドを変更する
xhprof のデフォルトでは、PHP のネイティブなシリアル化メソッドを使用してプロファイル情報を処理し、それを保存します。このテストでは、igbinary と Serialize と json_encode のパフォーマンスと占有率を比較しました。あらゆる面で利点があり、特に占有されるストレージ領域が大幅に削減されるため、シリアル化メソッドを igbinary_serialize に変更するだけで改善されます。

リスト表示を最適化する
プロフィールログの大きな画像を一つ一つ見るのは時間と労力がかかり、ターゲットを絞ったものではありません。そこで私が現在行っていることは、プロファイル ログのリストの最初の 1000 ログの全体の実行時間をリストに直接出力し、実行時間が長すぎるログを赤い太字でマークすることです。この小さな変更を加えた後は、動作状況を確認したいときに、ログリストの赤いリンクをクリックして確認するだけで済み、非常に時間と労力が節約されます。
xhprof ログファイルから実行時間を取得するには?簡単なコードは次のとおりです

コードをコピーしますコードは次のとおりです:

/**
* xhprof ログから実行時間を取得します
*
* @param string $log xhprof ログのファイルパス
* @return int 実行時間
*/
function getSpentTime($log) {
$profile = unserialize(file_get_contents) ($log));
$profile['main()']['wt'] / 1000;
}

上記では、本番環境での PHP パフォーマンス テスト ツール xhprof の使用をベースに、xhprof とパフォーマンス テスト ツールの内容を含めた詳細な説明を紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

See all articles