問題
transaction_tracer.detail=1
が設定されたトランザクション追跡には、計測されていない時間の赤いブロックが表示されます。
原因
トランザクショントレースで、計測されていない時間の赤いブロックが表示される理由は2つあります。
第一の理由は、頻繁に呼び出される関数があり、非常に高速である場合です(トップ100リストのデフォルトの閾値2ms以下)。
2つ目の理由は、最も一般的なものですが、関数の場合です。
- 実行に時間がかかる
- C言語で書かれています。
- 内部機能であるか、外部モジュールが提供する機能であるか
このような状況で、最も頻繁に発生する原因は、大きなブロックのデータや大きなファイルをユーザーに送信する機能です。ユーザーが低速な接続を使用している場合、小さなファイル(例えば、小さな画像)を送信すると、単純なネットワーク遅延のために長い時間がかかる可能性があります。" 内部関数やC拡張関数は計測されないため、PHPエージェントには"非難する相手がおらず、この時間は計測されない時間としてトランザクショントレースに表示されます。