Blackfire offers three levels of insights into your application performance:
It is recommended to avoid practices that would involve profiling actual end-user requests to avoid adding the profiling overhead on those (read more about the profiling overhead). We do recommend that you profile regularly your application manually, as well as automatically through Builds
However, profiling actual end-user requests also offers additional "real-life" context which may show valuable information to spot and debug a particular issue.
While monitoring performance on a production server, profiles can be triggered with two methods:
This feature is activated at the transaction level. Browse to a transaction view and find the "Profile Next Request" button.
Once configured the next matching request on your production server will be profiled.
Profile Next Request won't work for unnamed transactions or transactions named from the UI.
You may ensure that transactions are properly programmatically identified.
Blackfire automatically triggers profiles on the ten most impactful transactions, once per day.
Note that such profiles are triggered on end-user requests. It may generate some overhead, though only for those 10 requests per day.
Doing so enables Blackfire to collect recommendations for the top ten most impactful transactions, and offers actionable insights to help you optimize your code.
Automatic profiling is not triggered on unnamed transactions and transactions named from the UI.
You may ensure that transactions are properly programmatically identified.
When profiles are generated using automatic profiling based on a transaction
name, the callgraph shows a Pre-transaction detection
node, and the timeline
a Pre-transaction detection
span.
Blackfire verifies upon reception of each request if it should be automatically
profiled. The detection of the transaction from the request
may require that some of the code is being executed. All of that code is
therefore not profiled and is represented at Pre-transaction detection
.