11

私は実稼働サーバーでコードをプロファイリングする何かを実装するというアイデアをいじっていて、ベスト プラクティスのアドバイスが必要でした。オーバーヘッドが増えるため、すべてのリクエストをプロファイリングするのは明らかに悪い考えなので、リクエストごとにプロファイラーをランダムに呼び出すいくつかの手法を調べていました。10,000 リクエストごとに 1 つのプロファイルのようなものです。

Facebook のXHProf Profilerを使用してこのようなタスクを達成する方法があることは知っていますが、xdebug を使用して同様のソリューションを期待していました。

だから私の質問は(xdebugがプロファイラーであると仮定して):

  1. この種の機能はお勧めですか?本番環境から実世界のデータを取得したいのですが、オーバーヘッドのためにユーザーエクスペリエンスを破壊することを意味する場合はそうではありません.
  2. 本番環境に xdebug をインストールすると、何らかの方法で攻撃者/エクスプロイターに対してサーバーが開かれますか (デバッガーが有効になっていないと仮定)? このタイプのセットアップ用のボイラープレート構成はありますか?
  3. 適切なサンプルサイズでプロファイラーをトリガーする最良の方法は何ですか?

この問題に関する他の洞察は大歓迎です。

4

1 に答える 1

9

車輪を再発明しないでください。XHProf Profiler は、本番環境でのコードのプロファイリングに関しては、間違いなく最適なツールです。

xdebug 内でプロファイリングを有効にするためのオプションは、php.ini ファイルまたは .htaccess ファイルを介してプロファイリングを常にオンにするか、 を介しxdebug.profiler_enable = 1てプロファイリングを選択的にオンにすることに制限されていますxdebug.profiler_enable_trigger = 1。後者の場合、XDEBUG_PROFILEGET または POST パラメーターを設定するか、名前で Cookie を送信する必要がありますXDEBUG_PROFILE。これは、いたずら好きな人がそうしたい場合、一連のリクエストに GET パラメーターを追加するだけで、サーバーの速度が低下する可能性があることを意味します。

リクエストの比較的ランダムなサンプルをプロファイリングする唯一のオプションは、cron スクリプトで .htaccess ファイルを適切なディレクトリに定期的に配置し、それをディレクトリの外に移動することです。それでも、それは望ましいことではありません。

XHProf を使用する場合は、 XHGUI を参照してください

http://phpadvent.org/2010/profiling-with-xhgui-by-paul-reinheimer

于 2010-12-07T01:49:26.753 に答える