What is Blackfire?

Welcome to Blackfire, your Performance Management Solution. Blackfire helps developers profile, test, debug, and optimize performance of their applications. Blackfire can be used at any step of an application's lifecycle: during development, test, staging, and production.

Blackfire's core technology relies on profiling techniques. While the application code is being executed, Blackfire gathers resource consumption data.

As a profiler, Blackfire lets developers analyze the execution path of the application code's function calls via a call-graph representation. You get the detailed resource consumption in terms of Wall-time, I/O time, CPU time, Memory, Network, HTTP calls, and SQL requests. In addition, a flamegraph representation shows individual function calls on a timeline for a better understanding of the call stack.

On top of regular profiling features, Blackfire also gives performance recommendations that allows developers to improve their application code without even looking at call graphs. Performance recommendations, but also security and quality ones. Behind the scenes, Blackfire analyzes the framework and libraries that your application is using to detect potential optimizations.

Note

To better understand how to read profiles in Blackfire, check our docs on analyzing call graphs and analyzing timelines.

Blackfire is also more proactive than APMs as it helps you set and reach performance expectations for your applications through assertions. From the first line of code in your app, just like you write unit tests or integration tests, you can also write performance tests and run test scenarios.

Better than that, you can automate performance testing by integrating Blackfire with your current tools, periodically run scenarios, and receive notifications when performance reports are available.

Note

To learn more about performance management, check out Blackfire's book.

How does it work?

Blackfire gathers data by instrumenting the application code. Instrumentation only happens when triggered explicitly by an authorized Blackfire user or by Blackfire itself. As end users requests are not instrumented, Blackfire adds no overhead for end users, which makes it safe to use in production. Another benefit of the on-the-fly runtime instrumentation is that you do not need to modify the application code to get profiling data. Which makes it much more scalable when releasing to production.

Note

To better understand how Blackfire works, check our doc on the Blackfire stack.

What's Next?

Before starting to use Blackfire, install the stack on your infrastructure or your personal computer.

Then, learn more about how to profile HTTP requests via a browser or the CLI (Web Pages, Web Services, API calls) and how to profile CLI commands.

If you have never used a profiler before, learn more about how to analyze call graphs, how to read a timeline, and how to interpret time.

Then, learn how to write tests and scenarios.

Finally, learn how to integrate Blackfire with many third-party services and libraries.