パフォーマンスオーバーヘッド

OpenTelemetry PHP Distro 使用時のパフォーマンスベンチマーク結果と、オーバーヘッドを最小化するためのガイダンス。

このページでは、OpenTelemetry PHP Distro を使用する際のパフォーマンスへの影響を概説し、オーバーヘッドを最小化するためのガイダンスを提供します。

他の計装エージェントと同様に、Distro はアプリケーションプロセス内で実行され、ランタイムコストが追加されます。 正確な影響は、アーキテクチャ、設定、デプロイ環境、ワークロードによって異なります。

以下のベンチマークでは、ローカルの Docker セットアップ(PHP-FPM 8.2 + NGINX)で複数の PHP オブザーバビリティのバリアントを比較しています。 コレクターを使用するシナリオでは、コレクターもローカルで実行され、ホストの CPU リソースを共有しています。

ベンチマークのセットアップ

  • アプリケーション: PHP-FPM 8.2 上の Laravel/Aimeos
  • 環境: NGINX を使用したローカル Docker
  • テレメトリーの送信先: OTLP 互換エンドポイント

結果

バリアントリクエストあたりの平均時間 [ms]オーバーヘッド [ms]
エージェントなし17.360.00
ベンダー固有の APM エージェント20.633.27
OpenTelemetry PHP Distro23.085.71
OpenTelemetry PHP Distro + ローカルコレクター24.377.01
バニラ OpenTelemetry PHP + protobuf(C エクステンション)+ コレクター25.768.40
バニラ OpenTelemetry PHP pure-PHP protobuf エクスポート + コレクター49.0231.66
バニラ OpenTelemetry PHP pure-PHP protobuf エクスポート2158.582141.22

主な知見

  • OpenTelemetry PHP Distro は、pure-PHP protobuf エクスポートを使用したバニラ OpenTelemetry PHP と比較して、オーバーヘッドを大幅に削減します。
  • ローカルのコレクター配置は、PHP ワーカーと CPU を取り合う場合にオーバーヘッドを増加させる可能性があります。
  • バニラ OpenTelemetry PHP の pure-PHP protobuf エクスポートは、このベンチマークでは非常に高いオーバーヘッドをもたらします。

推奨事項

  • 自身のワークロードとインフラストラクチャでオーバーヘッドを測定してください。
  • 非同期トランスポートを使用した OTLP HTTP/protobuf を優先してください。
  • レイテンシーに敏感なアプリケーションワーカーと、負荷の高いコレクターワークロードの同居は避けてください。
  • SLO を満たすようにサンプリングとエクスポーターの設定を調整してください。