This quarterly release of Tideways includes Distributed Tracing and Profiling, Traces in the History, and many more features.
In this blog post, we will provide a detailed overview of all the changes. There was also a webinar on the release that you can follow here:
Distributed Tracing and Profiling
In more complex projects where several applications or microservices communicate with each other, profiling becomes more powerful when it can propagate to each sub-request that takes part in a trace. With distributed tracing, the software industry has developed an approach to combine data from multiple related requests. Tideways joins this effort by releasing distributed tracing and profiling across multiple related HTTP requests.
When triggering a trace via Chrome Extension or CLI, Tideways passes information about the parent trace to the child via HTTP headers and combines the results on the backend into a single trace to look at.
This improvement means the Timeline visualization is shown in a single view:
The callgraphs for each participating request can be selected and explored as well.
This feature is available to projects with a “Pro” license.
Documentation: Setup of Distributed Tracing
Tideways now stores a few selected traces as part of the application’s history, longer than the regular retention of 5-30 days, depending on the license.
These stored traces allow comparisons of performance through detailed analysis over long periods of time. In combination with our revamped trace comparison that was part of the last 2021.2 release, this gives more insights into long-term changes of application performance.
Every day 1-5 traces are stored as part of the history, and they are selected from the transactions with the highest impact in every service.
This new feature is available to projects with the latest “Standard” or “Pro” license.
Documentation: Trace History
Compact Slack Notifications
Slack messages from bots can quickly claim a lot of real estate on the screen and crowd out other important messages. Depending on how a channel is used, more compact notifications are essential to allow a high number of messages on the same screen. Configuration for Tideways Slack Notifications now allows users to select between a new compact message mode and the already existing detailed message mode.
The documentation shows examples of both compact and detailed messages and how to configure the mode.
cURL Timers in Timeline Profiler
The Timeline Profiler now collects timing information for cURL based HTTP Requests that are available from curl_getinfo at runtime and shows them in the span details panel.
You can find more information about the available timers in the changelog.
PHP 8.1 Support
Tideways now supports PHP 8.1, starting with the PHP extension 5.4.26. The PHP 8.1 support covers all existing functionality of PHP from previous versions. However, support for the new Fibers feature is not implemented yet. This means that code using fibers may produce confusing timeline and profiling results.
Reduced Daemon Overhead under Heavy Load
Usually, the tideways-daemon processing all monitoring and profiling data has a very low CPU and memory profile. However, we observed that when many PHP requests are processed within a second and the sample rate is high, then the load can sometimes increase. This has lad us to refactor the daemon in two specific ways:
- Serialization of data between PHP extension and daemon was optimized to use a more CPU and memory efficient Go library.
- Parallel processing can now use a worker connection pool that limits the amount of processed monitoring and profiling payloads in parallel. This is currently an opt-in feature that you can enable with the –use-connection-pool flag. (Documentation)
Several customers have reported significantly better CPU and memory usage of the daemon with these two changes enabled.