A few weeks into year five of the Tideways project we are happy to announce the release of Tideways version 5, including large updates to all parts of the stack from PHP extension, daemon and the user-interface. Ladies and gentlemen, this is Tideways no. 5!
For now the new version is only available when you change the package repository URLs to new endpoints, and on September 17th we will be pushing the version 5 release on the old repository as well so that automatic upgrades of your systems will pick it up.
New: Monitoring Performance of Downstream Databases, File I/O and Services
Tideways now collects more data in monitoring mode, and always capture the total performance of SQL, HTTP, Redis, Memcache, File I/O and other downstream services for monitoring purposes.
This unlocks a much requested feature to show the performance of all these layers directly in the monitoring chart of Tideways. With 100% of requests collecting this information with very low overhead, we can give you an accurate distribution of all requests to layers and capture the latency of every outlier.
The downstream service performance will be available on an application/service level in every plan, and if you upgrade to the new Pro plan every endpoint will have downstream layer monitoring data as well.
Read more: Blog post about downstream service performance
New: Memory Profiling
We finally added much requested memory profiling support both to the timeline and the callgraph profiling modes. First, you can see the memory amount that was allocated during the full execution of a selected timespan in the timeline profiler. Secondly, you can switch to Memory View and see a timeline of the allocated memory from 0 to peak memory. Thirdly, the callgraph profiler can now show the allocated memory of each and every function call.
New: Simpler and Better Transaction Naming
With the old versions of Tideways you had to configure the tideways.framework INI setting or call a custom function to name your transactions. Starting with version 5, we automatically detect the framework for you and if you aren’t using one, then we will use the basename of SCRIPT_FILENAME instead of grouping everything into a single, undifferentiated “default” transaction as before. This helps alot with WordPress applications for example, where the admin actions are mostly controlled from different scripts.
New PHP Extension v5.0
All these features are only possible because of our new version 5 of the PHP extension – rewritten from scratch and not based on the original XHProf codebase anymore. Designed specifically around the new PHP 7 Zend Engine it achieves a reduction in overhead. Of course PHP 5.3 – 5.6 are also still supported by this new version.
We moved to an entirely new datastructure that is better suited for future improvements and makes it easier to support new frameworks and libraries and potentially new languages in the future. You will see this directly when looking at traces, where we now group framework spans and events together more closely. In some cases such as Symfony we are also able to store the duration of listeners in addition to events from now on.
From a configuration perspective the extension now works with better defaults and improved batching and truncating in case of large traces and an abort condition that watch the PHP memory limit, so that Tideways always automatically deactivates detailed tracing if the request goes above 90% of the memory limit (configurable).
As for backwards compatibility version 5 is mostly a drop in replacement. Unfortunately, there are two necessary BC breaks in the extension and a few deprecated features that got removed.
Read More: BC Breaks and Removals in the new PHP Extension
What’s next?
This release includes a large amount of new features and changes to existing functionality, but we couldn’t include everything that we wanted without delaying for several additional months. Stay tuned in the next months to see updates on long term requested features such as trace triggering improvements, weekly report, alerting and more thorough usage of the downstream service/layering data.