Ubuntu前書きソフトウェアエンジニアリングでは、プロファイリングは、アプリケーション内で発生する可能性のあるボトルネックとパフォーマンスの問題を識別するために、実行時にアプリケーションを分析するために使用される手法です。ソフトウェアの最適化に不可欠なリソースです。プロファイリングは、コードレベルでアプリケーションを分析するため、ベンチマークとは異なります。ベンチマークは、エンドユーザーが経験するアプリケーション全体のパフォーマンスを分析することを目的としています。*プロファイラー*は、メモリ使用量、関数呼び出しの頻度と期間、リクエストへの応答時間などに関する統計と洞察に富んだデータを生成するために、アプリケーションに関する詳細情報を収集するソフトウェアです。XHProfは、PHPアプリケーションを分析するために設計されたプロファイラーです。XHProfはFacebookによって作成およびオープンソース化され、パッシブプロファイラーとして機能します。バックグラウンドで動作し、アプリケーションのパフォーマンスへの影響を最小限に抑え、本番環境での使用に適しています。XHGuiは、XHProfを介して収集されたデータを視覚化するための豊富なインターフェイスを提供します。14.04で実行されているPHPアプリケーションをプロファイリングするためにXHProfとXHGuiをインストールする方法を示します。前提条件このガイドに従うには、次のものが必要です。次に進む準備ができたら、sudoアカウントを使用してサーバーにログインします。」がインストールされていない場合は、すぐにインストールする必要があります。PHP拡張モジュールの両方をセットアップするために必要になります。パッケージマネージャーのキャッシュを次のように更新します。`をインストールします。mcrypt最後に、XHGuiをインストールするにはGitが必要です。Gitがサーバーにまだインストールされていない場合は、次の方法でインストールできます。gitステップ2-XHProfのインストールここで、XHProfをインストールして有効にする必要があります。`拡張機能を有効にする必要があります。+`を使用して有効にします。/etc/php5/mods-available/xhprof.iniこのファイルに次の内容を含めます。/etc/php5/mods-available/xhprof.iniextension=xhprof.soモジュール構成ファイルを有効にするには、次を実行します。xhprofあとは、Webサーバーを再起動して変更を適用するだけです。*環境(Apache)では、次の方法でこれを実行できます。+`サービスを再起動する必要があります。+`拡張機能がインストールされ、アクティブ化されるはずです。確認するには、次を実行します。xhprof出力は次のようになります。+`を取得することです。XHGuiは、MongoDBを使用して、XHProfのアプリケーション分析から取得したデータを保存します。MongoDBをインストールするには、次を実行します。PHP拡張機能をインストールするには、次を実行します。mongoインストールは、MongoDBのエンタープライズ認証を有効にするかどうかを選択するために、ある時点で入力を求めます。デフォルト値(no)のままにして、Enterキーを押すだけでインストールを続行できます。PHP拡張を有効にする必要があります。/etc/php5/mods-available/mongo.iniファイルに次の内容を含めます。/etc/php5/mods-available/mongo.iniextension=mongo.soモジュール構成ファイルを有効にするには、次を実行します。mongo次に、Webサーバーを再起動して、変更を適用します。*環境(Apache)では、次の方法でこれを実行できます。+`サービスを再起動する必要があります。restart`モンゴ`拡張機能がインストールされ、有効にする必要があります。確認するには、次を実行します。mongo出力は次のようになります。disabled...ステップ4-MongoDBインデックスのセットアップ(オプション)これはオプションですが、推奨される手順であり、MongoDBのデータを保存およびアクセスする際のXHGuiの全体的なパフォーマンスを向上させます。以下を使用して、コマンドラインからMongoDBクライアントにアクセスします。mongo次に、XHGuiのインデックスを作成するために、次の一連のコマンドを実行します。)MongoDBクライアントを終了するには、次を実行します。exitステップ5-XHGuiのインストール次のステップは、XHGuiをインストールし、それをWebサーバー上の仮想ホストとして設定することです。GithubからXHGuiリポジトリを複製します。XHGuiディレクトリは、通常のユーザーが所有するように設定することをお勧めします。+」を使用しますが、これらの値を独自のユーザー名とグループに置き換える必要があります。xhguiXHGuiの依存関係をインストールするには、付属のインストーラーを実行します。`のコンテンツを提供する仮想ホストを設定する必要があります。+`の仮想ホストを作成する方法について説明します。+`が有効になっていることを確認する必要があります。sites-available`の下に新しい仮想ホストファイルを作成します。/etc/apache2/sites-available/xhgui.confこのファイル内に次の内容を配置します。+`を指す必要があることに注意してください。xhgui変更を適用するには、次を使用してApacheをリロードします。+`に新しい仮想ホストファイルを作成することから始めます。/etc/nginx/sites-available/xhguiこのファイル内に次の内容を配置します。+`を指す必要があることに注意してください。/etc/nginx/sites-enabled/xhgui次に、Nginxを再起動して変更を適用します。restartステップ6-XHProfのセットアップこの時点で、Webサーバー構成で指定したサーバー名にアクセスすることにより、ブラウザーからXHGuiのインターフェイスにアクセスできるはずです。プロファイリングデータの収集をまだ開始していないため、次のようなページが表示されます。[画像01:XHGuiの初回実行]XHProf拡張機能は既にサーバーにインストールされていますが、アプリケーションのプロファイリングプロセスをアクティブにする必要があります。これは通常、実行中のすべてのPHPスクリプトにコードの一部を自動的に追加するPHPディレクティブをWebサーバーに含めることによって行われます。デフォルトでは、XHProfはアプリケーションに対して行われた100件のリクエストのうち1件のみをプロファイルすることに注意することが重要です。XHGuiは、アプリケーションのプロファイリングを初期化するためにスクリプトに追加できるデフォルトのPHPヘッダーを提供します。次のセクションでは、Apache環境とNginx環境の両方で、このヘッダーファイルをすべてのPHPスクリプトに自動的に付加する方法を示します。この例では、このサーバーのメインWebサイトとしてホストされているWordPressアプリケーションのプロファイリングを有効にします。Apacheでプロファイリングを有効にするプロファイリングするWebサイトのApache構成ファイルを編集しましょう。Webサイトのプロファイリングを有効にします。選択したコマンドラインエディターでこのファイルを開きます。+`ブロック内に強調表示された行を含めます。...</VirtualHost>ファイルを保存して終了します。Apacheを再起動して、変更を適用します。restartNginxでプロファイリングを有効にするプロファイリングするWebサイトのNginx構成ファイルを編集しましょう。Webサイトのプロファイリングを有効にします。選択したコマンドラインエディターでこのファイルを開きます。+`スクリプトの処理方法を定義するブロックを探します。このブロック内に強調表示された行を含めます。...}ファイルを保存して終了します。Nginxを再起動して、変更を適用します。restartステップ7-XHGuiの使用開始すべてが正しく設定されましたが、Webサイトが通常取得するビューの量によっては、XHGuiに最初のプロファイリングデータが表示されるまでに時間がかかる場合があります。これは、デフォルトでXHProfが受信した100リクエストのうち1リクエストのみをプロファイルするという事実によるものです。プロファイルデータが利用可能になる前に、Webサイトをナビゲートし、数回リロードする必要がある場合があります。XHGuiの概要プロファイリング情報が利用可能になると、次のようなページが表示されます。[画像02:XHGuiの概要]以下に、この概要表の各フィールドの簡単な説明があります。pmu(ピークメモリ使用量):*このリクエスト中のメモリ使用量のピークプロファイリング実行の詳細を表示するには、_time_フィールドのリンクを使用します。次のようなページが表示されるはずです。[画像03:データのプロファイリング]左側には、使用されたメソッド、スクリプト名とURL、リクエストパラメータなど、分析されたリクエストに関する情報が表示されます。メインページのコンテンツでは、実行に最も時間がかかった関数またはメソッド、およびメモリ消費量が多い関数またはメソッドを特定できます。これらの情報はすべて、特定のプロファイリングの実行とリクエストに関連しています。関数呼び出しの検査ページの一番下までスクロールすると、このリクエスト中に実行されたすべての関数呼び出しに関する詳細情報を含むテーブルにアクセスできます。これには、関数またはメソッドが実行された回数、実行にかかった時間、それが使用したメモリ、および他の多くの興味深い詳細。テーブルヘッダーを使用して、これらのパラメーターのいずれかでリストを順序付けることができます。右側の検索ボックスを使用して、特定の関数またはメソッド名を検索することもできます。[画像04:XHGui関数呼び出し]実行の比較XHGuiの最も便利な機能の1つは、2つの異なるプロファイリング実行を比較するために使用できる比較ツールです。これにより、コードを変更し、複数の実行を比較して、変更によってアプリケーションのパフォーマンスが向上したかどうかを確認できます。*という名前のボタンがあります。このボタンをクリックすると、その特定のURLに対して実行されたすべてのプロファイリング実行のリストが表示され、リスト内のアイテムの1つを選択して比較ビューを生成できます。比較する実行を選択し、[比較]ボタンをクリックします。これにより、比較ビューは次のようになります。[画像05:XHGuiのランの比較]結論プロファイリングはソフトウェア最適化のための重要な手法であり、コードレベルでアプリケーションに関する詳細な洞察を提供します。XHProfやXHGuiなどのツールを使用すると、コードの問題のある部分を効果的に特定し、アプリケーションのパフォーマンスにおけるコード変更の影響を監視できます。XHGuiで使用可能な構成オプションの詳細については、公式のhttps://github.com/perftools/xhgui[Githubリポジトリ]を確認してください。