Tideways 2024.1 Release
You can now unpack the Christmas present that was promised to you at the end of 2023! As you may have already read in the Flamegraph Feature Preview, this exciting new feature of the Profiler is now the focus of our first release in 2024.
The Flamegraph complements the Timeline and Callgraph features and visualizes Aggregated Traces. The goal was to provide profiling information across many traces and thereby gaining new and deeper insights into performance. The aggregated spans the Flamegraph makes visible in its easy-for-the-eye color scheme are very useful to get a representative average over many samples.
Summary:
- Aggregated Traces
- Feature Preview: Flamegraphs
- Missing Data Alerts
- Ignore Control-Flow Framework Exceptions
- Feature Preview: Sidebar Menu
- PHP Extension 5.7 Release
- New Shopware 6 Instrumentations
- RdKafka Instrumentation
- \Tideways\Profiler::markAsCliTransaction()
- MongoDB Experimental
- tideways.enable_cli now defaults to 1
- tideways.dynamic_tracepoints.enable_* now default to 1
- macOS Builds
- Docker Image for tideways-daemon
Aggregated Traces
Tracepoints can now paint a representative average picture for all its traces. This gives a statistically more correct view of the trace by smoothing the effects of outliers.
Tideways computes an aggregated summary trace by averaging the data from all collected traces. The aggregated traces are visualized with a Flamegraph and thereby make an in-depth performance analysis possible.
When callgraph data is available for the tracepoint, these are also averaged in the aggregated trace.
This feature is only available to customers with current Tideways plans.
More information:
- Documentation: Aggregated Traces
Feature Preview: Flamegraphs
The new Flamegraph Feature gives you a different visualization of existing data than you currently have with the Timeline spans and as such is a useful tool to measure time and memory consumption. It’s a well-known visualization, as it is used in many other performance tools. Tideways uses the inverted “icicle graph” which helps to avoid scrolling when starting at the top. For complex Timelines, Flamegraphs are usually more compact, since they aggregate lots of small spans of the same category into one frame.
We are planning to make improvements to the PHP Extension to supply more and more detailed data before we mark this feature as complete. For now it’s marked as a feature preview in the UI.
More information:
- Documentation: Flamegraphs
Missing Data Alerts
This feature proactively notifies you when there is no data flow, it identifies gaps or interruptions in data collection, thereby ensuring the reliability of data-driven processes.
For new projects created since early March it is activated by default for a timespan of 24 hours without discernible data flow.
For existing projects the alert has to be created under Project Settings > Notifications for now. We plan to automatically create it for all existing projects in the next few weeks.
You can create and change that under “Notifications” and choose between different time periods of 1 to 24 hours, according to your specific business requirements. It helps you to quickly identify issues to minimize disruptions and improve operational resilience.
More information:
- Documentation: Missing Data Alerts
Ignore Control-Flow Framework Exceptions
Tideways now ignores a preselected list of framework exceptions by default that were used for control-flow and not to signal an actual error.
This solves the problem that exceptions such as Symfony’s NotFoundHttpException
or Shopware’s CustomerNotFoundException
would create many entries in the exception tracking, including notifications, and a Tideways user would react to them by ignoring them, being distracted, or finding the button to ignore them.
Now we turn this around, these exceptions are ignored by default but if you need to see them you can configure that in the Project Settings => Exception Tracking => Ignored Exceptions menu.
Feature Preview: Sidebar Menu
We also implemented the Sidebar Menu which is aimed at improving usability, discoverability and making our overall navigation experience more intuitive. What’s more, the Sidebar Menu leaves more room for the profiling information.
At present, both menus are available and the Sidebar Menu can be tested but due to the various advantages we are considering switching to the Sidebar Menu completely. Every user can take a look at the new layout by switching to it in User Settings: There you’ll find a button “Enable Sidebar Menu” under “Feature Preview: Sidebar Menu”.
PHP Extension 5.7 Release
To derive the most benefit from the new features it is necessary to install the latest version of the PHP Extension. We improved the quality of the PHP Extension 5.7 so that all our new features can be used to their fullest to support you in the best possible way.
New Shopware 6 Instrumentations
Tideways now has improved Shopware 6 instrumentation. Important functions of the Shopware API on product detail, category and other core pages are automatically instrumented with spans in the timeline to provide better context.
In addition, we have made Tideways compatible with the upcoming Shopware 6.6 release.
RdKafka Instrumentation
Tideways 5.7 includes instrumentation for Kafka producers using the rdkafka PHP extension. You’ll now start to see various Kafka-related spans within your timeline.
\Tideways\Profiler::markAsCliTransaction()
Tideways already automatically separates transactions using PHP’s CLI interface into the separate :cli
service to prevent long-running cleanup tasks from skewing the number of web requests, making the performance profile incorrect for both the regular requests and the cleanup tasks.
As the CLI interface might not be available with all hosting providers, it forces them to run such cleanup tasks by means of a regular HTTP request. This will most likely intermingle them with the regular web requests by default.
Calling the new \Tideways\Profiler::markAsCliTransaction()
method will cause the current request to be sorted into the corresponding :cli
service, just as if it was executed using the CLI interface. Shopware 5’s web-based cronjobs are automatically detected to make use of this new functionality.
MongoDB Experimental
We improved the instrumentation support for MongoDB. You can now see the exact query that was sent. Query parameters are eliminated so that we can guarantee no personal information is transmitted to Tideways.
tideways.enable_cli now defaults to 1
The INI setting tideways.enable_cli
now defaults to 1 instead of 0. Nevertheless, you can disable it and change it back. We are changing this default, because many users do this change eventually themselves already, often in response to struggling why no traces are collected on the CLI.
tideways.dynamic_tracepoints.enable_* now default to 1
Another improvement concerns the INI settings tideways.dynamic_tracepoints.enable_web
and tideways.dynamic_tracepoints.enable_cli
which now also default to 1 and will be activated with the next update. We are changing this default, because the tracepoints feature has been available for several years, many edge case problems have been addressed and we see no risk in activating it by default.
macOS Builds
Just to remind you that Tideways can be installed on macOS M1/M2/M3 (ARM) and Intel systems with the help of Homebrew, including the installation of PHP Extension, Daemon and CLI. We outlined for you how to get started with Tideways on macOS with Homebrew.
Docker Image for tideways-daemon
There is now a public docker image to use for the tideways-daemon where we previously only provided a Dockerfile in the documentation. The image is available under ghcr.io/tideways/daemon
and we have updated the documentation to show it used with Docker and docker-compose.
Documentation: Install with Docker