トレースにおける未計測の時間

問題

トランザクショントレースに transaction_tracer.detail=1 となっている未計測時間の赤いブロックがある。

原因

トランザクショントレースに未計測時間の赤いブロックが表示される原因は2つあります。

1つ目は、短時間のうちに何度も関数の呼び出しを行い、それが、トップ100リストのデフォルト設定である 2msの閾値を下回っている場合です。

2つ目の理由、これが最もよくある理由ですが、は、関数の実行に時間がかかるが、Cで書かれており、内部関数または外部モジュールが提供する関数のいずれかである場合です。最もよくある原因は、ユーザーにデータや大きなファイルの大きなブロックを送信する関数です。ユーザーが低速回線で接続している場合、小さなファイル(例えば小さな画像)を送信するだけで、ネットワークの長い待ち時間となることがあります。内部またはCの拡張関数が計測されていないので、PHPエージェントはどこで費やされたが判定できません。これは計測されていない時間としてトランザクショントレースに表示されます。