Posts

Tideways 2026.2 Release

Understanding complex request traces is one of the hardest parts of performance analysis.

In this Release, we focused on making this significantly easier in Tideways. The Timeline has been redesigned to provide a clearer view of how requests are executed, with new layout modes, improved navigation, and a more consistent span model.

These changes help you follow execution order, understand dependencies, and identify performance bottlenecks faster, even in complex applications.

In addition, we improved instrumentation across frameworks and libraries, making traces more consistent and providing more detailed insights into previously less visible operations.

And finally, a teaser for our next release: AI-assisted performance analysis and optimization through the Tideways CLI, integrated with Claude, Codex, Cursor, Pi Coding Agent, and other coding agents.

Summary

Improvements to the Timeline Rendering

Waterfall & Condensed Timeline

Our Timeline has been a key part of gaining performance insights with Tideways. It is collected automatically and provides detailed request data, including SQL queries, HTTP requests, and more. We have now improved the visualization to make it more obvious to understand complex request patterns.

We introduced two new layout modes: Condensed and Waterfall. Condensed is now the default, based on our tests and feedback from beta users. You can still switch to the previous layout, now called Classic, and the preference is saved in the browser.

In Classic mode, spans are grouped by their summary. For example, all spans with sql(SELECT service) appear in the same row, regardless of when they occur. This creates a very compact view but makes it harder to follow the sequence of events over time.

The Condensed mode reuses lines only within a defined threshold and ensures that parent spans are always displayed above their children (e.g.,findCriticalOperations). This improves the visibility of dependencies and the chronological order.

The Waterfall mode is at the other extreme end, where none of the lines are reused. For this, chronological order is as obvious as possible while also often being used in other tools like dev tools in web browsers.

Each mode offers a different balance between compactness and clarity. You can switch between them depending on whether you want a high-level overview or a more detailed, step-by-step view of how a request unfolds.

Documentation: Timeline Layout Modes.

Span Pagination & Mini-Timeline

With the new display modes, it can be less obvious how often and where a span appears across a longer request.

To address this, we added additional navigation and context to the span details view when a span occurs multiple times:

  • Summary box: Shows the total count and duration
  • Pagination: Jump between occurrences of the same span in the timeline by clicking left/right
  • Mini-Timeline: Visualizes the position and duration of each occurrence, with clickable navigation

We also added this functionality to the Summary and Flamegraph tabs. Previously, only a single span was shown for the selected Flamegraph frame or table entry. Now, you can view and paginate through all corresponding spans.

More details:

Quality of life improvement: highlight and select lines

Another small improvement to the Timeline that was well received in our tests: the full row of the currently selected span is now always highlighted. In addition, clicking on a row’s summary text selects the first corresponding span automatically.

Events, Listeners, Views now with full span details

The Timeline Profiler now does not differentiate between spans and “span-events” anymore; all instrumented function calls are tracked as spans with time, memory, custom annotation context, and stack trace information.

This simplifies the UI of the Timeline Profiler and makes it easier to understand, while at the same time providing more insights individually on operations that were previously stored as just “span-events”.

Before:

After:

This migration started with PHP Extension version 5.36.0 in March 2026 and will continue over the next weeks.

More details:

Response Time Distribution Chart Improvements

Looking at the response time distribution for a transaction has also become clearer.

Apart from visual improvements, we also added the possibility for users to choose the data resolution. You can now get a compact “5% to 99%” percentile of the full resolution of our underlying histogram data structure.

Documentation: Response Time Distribution.

GraphQL Instrumentation Improvements

In GraphQL APIs, all business logic runs within a single query. Previously, field retrieval was shown as sub-operations of the GraphQL span, which made it harder to reflect the nested structure of the query.

With this Release, Tideways creates spans for objects and field resolution, making the object graph visible and helping you identify expensive parts of a query more easily.

More details:

Instrumentation improvements

  • Spans for all Symfony lifecycle methods (boot / terminate)
  • Symfony EventDispatcher is now instrumented before Symfony’s boot, supporting instrumentation outside Symfony projects.
  • Spans for Laravel’s lifecycle.
  • Migrated Doctrine spans now include annotations about the size of the workload.
  • Event names for Yii 1/Yii 2 are now properly namespaced by the component name.
  • Events for Symfony, Laravel, Magento 2, Yii 1, Yii 2, and WordPress were migrated to full-featured spans, and annotations were added where useful.
  • PHPUnit test cases now create full-featured spans.
  • Ad-hoc tables created by an SQL subselect will now be included in the list of tables shown in the timeline title, allowing to more easily distinguish different queries using dynamic tables.

Outlook: AI Insights Beta

AI-assisted development is one of the most discussed topics in software engineering right now. We are particularly interested in how Tideways performance data can help AI tools identify and resolve performance bottlenecks more effectively.

Over the last two months, we have been laying the foundation for this by making Tideways data accessible through our CLI. As part of our Beta program, we have now released a first version with support for AI-powered performance analysis and optimization.

If you would like to try it out, you can enable the AI Insights Beta in your Tideways organization settings under Beta Features. This unlocks an early preview in the CLI through tideways run.

Celebrating a decade of Tideways

Meet Moni, the Tideways MONItoring and Profiling ElePHPant!

To celebrate our tenth anniversary, we got hold of a full herd of Tideways ElePHPants. We’re sending them to our partners and customers as a thank you for your trust, support, and collaboration over the past ten years.

Our ElePHPants will soon be on their way to partners and loyal customers as a token of appreciation; we’ll reach out to you.

The ElePHPant is a well-known symbol of the PHP community. Our version is a way of honoring that connection and the ecosystem that shaped Tideways from the beginning.

Moni represents where we come from and what we focus on: monitoring solutions that deliver lasting value and reliable performance insights.

We’re looking forward to the years ahead, continuing to improve performance insights.


p.s.:

A few weeks ago, we introduced Moni, our Tideways MONItoring and Profiling ElePHPant.

We are starting to send Moni to a selection of partners and long-standing customers as a thank you for their trust and support. These relationships have shaped what we have built, and this is a small way to give something back.

At the same time, many of you from the broader community reached out asking if there is a way to get a Moni as well. We love your enthusiasm about our Moni and wanted to make this accessible beyond our close partners.

So we are opening this up: alongside the partner shipments, we will run a raffle and give more of you the chance to add Moni to your ElePHPant collection.

To take part, register for our newsletter. We will notify you as soon as the raffle starts and share all details on how to participate.

Good luck!

Tideways has won the German Customer Award 2025!

Wir freuen uns sehr: Tideways hat den German Customer Award 2025 gewonnen! 🎉🏆

Die Auszeichnung würdigt Unternehmen, die durch herausragende Kundenorientierung und exzellenten Support überzeugen. In einer unabhängigen Auswertung konnten wir uns durch starke Leistung gegenüber anderen Bewerber:innen hervorheben.

Dieser Erfolg ist nur möglich durch das Engagement unseres Teams – und durch das Vertrauen unserer Kund:innen. Dafür sagen wir von Herzen: Danke!

Der Award ist für uns Ansporn, auch in Zukunft alles zu geben, um unseren Kunden den bestmöglichen Service zu bieten.

Euer Tideways-Team


We are delighted to announce that Tideways has won the German Customer Award 2025! 🎉🏆

The award recognizes companies that impress with outstanding customer focus and excellent support. In an independent evaluation, we were able to prevail against other applicants with our strong performance.

This success is only possible thanks to the dedication of our team—and the trust of our customers. For this, we would like to express our heartfelt thanks!

The award motivates us to continue giving our all in the future to offer our customers the best possible service.

Your Tideways team

Tideways 2026.1 Release

We’re rolling out a new wave of improvements across Tideways in our first Release of 2026, focusing on deeper visibility, smarter automation, and broader ecosystem support.

From automatic tracepoints for selected transactions and improved exception workflows to enhanced FrankenPHP worker-mode instrumentation, these features continue to reduce manual effort while increasing observability.

We’ve also expanded tracing capabilities: distributed tracing now activates automatically alongside tracepoints, and session performance is measured in a dedicated layer to help uncover locking bottlenecks. Shopware users benefit from new invalidate-cache tagging for better HTTP cache debugging, while Redis users gain key-level visibility with improved phpredis instrumentation.

Framework support continues to grow with automatic instrumentation for Tempest and Yii3, alongside improved deployment support for (Open)LiteSpeed environments. On the performance side, Tideways can now flag costly Symfony polyfill usage and recommend native extensions where beneficial.

Finally, observation data is now accessible via the REST API, making it easier to integrate detected bottlenecks into your own workflows.

As always, these updates aim to help you spot performance issues faster and spend less time on manual setup.

Automatic Tracepoints for Selected Transactions

You can now create automatic tracepoint triggers for specific selected transactions, provided that you have a Business or Enterprise plan with advanced tracepoint triggers.

Select the “Tracepoint Trigger” option from the settings dropdown on either the transaction details page or the transaction settings list.

Then configure the schedule to be daily, weekly, or monthly and the duration of the tracepoint to get started.

Acknowledge Errors and Exceptions

It’s now possible to acknowledge errors/exceptions from the error details screen, and if you don’t acknowledge an error, it will send another notification every 24 hours until it is either acknowledged, ignored, or resolved.

This helps with the situation where a notification for a new exception is overlooked accidentally and never seen again.

For all projects created before February 2026, the notification on unacknowledged errors is disabled by default. You can enable it in the settings for the “New Exception” notification.

Worker-Mode for FrankenPHP

Running FrankenPHP in worker mode now automatically recognizes every request run in the main loop, calling frankenphp_handle_request. There are no code changes required in your application to get the same support as with PHP-FPM or Apache mod_php.

This is based on the automated worker mode instrumentation, previously introduced for job queues.

Previously, implementing the necessary code changes was particularly difficult when the framework itself provided the worker script, in the case of Symfony and its Runtime component.

Tracepoints and Distributed Tracing

If distributed tracing is enabled in the PHP extension, it is now automatically activated for requests with an active tracepoint

Previously, distributed tracing was only activated for developer-triggered requests via the Chrome Extension or CLI.

Documentation: Distributed Tracing

Session Layer

Tideways now measures the time spent on session-related operations in a dedicated session layer. This primarily supports detecting blocking session performance issues due to locking, as previously described in our blog.

This includes both loading the session and updating session data when the request completes.

Supported frameworks include PHP’s session extension (including Symfony), Laravel, and WoltLab Suite.

Invalidate-Cache-Tag for Shopware

To improve our HTTP Cache debugging support from the 2025.3 release, we now add an “invalidate-cache” tag to all traces that trigger invalidation of any item in the Shopware HTTP cache. This works for both use cases of direct or deferred invalidation.

This feature should help you detect requests that are invalidating the cache unexpectedly and which may contribute to a bad page cache hit rate.

The detailed trace view then shows which cache item keys were invalidated with the timeline “markers”.

phpredis Key Instrumentation

In addition to Predis and Credis support, instrumentation for the ext/redis (phpredis) extension now includes support for collecting the key accessed by a command.

Documentation: Advanced Instrumentation

Tempest support

With Extension 5.34.0, Tideways adds automatic instrumentation for the Tempest framework, one of the newer additions to the PHP ecosystem.

This includes automatically detecting controllers as transaction names, instrumenting the framework’s exception handlers to capture errors, and creating template engine and event spans to provide additional context.

Yii3 support

We also support the new Yii3 version released at the turn of the year. This includes transaction name detection and exception handling.

(Open)LiteSpeed support

The tideways-php Debian Package now also supports installing Tideways for LSWS, installing the Tideways Extension and the INI configuration template into the correct directories.

Polyfill Bottleneck

Tideways now detects if you use a Symfony Polyfill API (Mbstring, Intl, ..) and it takes up enough time of a request that installing the actual PHP extension would give you a significant performance improvement.

Make observations available via REST API

You can now query the REST API for observation data that show detected monitoring, configuration, and code bottlenecks with detailed problem and solution information.

Due to the highly flexible nature of each problem, the list only contains metadata for now and a link to the application where the detailed information is available.

Documentation: Observations API

Ten years of Tideways! Thank you for being part of the journey.

10 years ago, Benjamin founded Tideways with a clear goal: support PHP developers and help build faster, more reliable websites. Since then, more than 2,000 customers have used Tideways to gain better visibility into their PHP applications.

Seeing that web applications are slow without understanding why sparked an idea for Benjamin, that ultimately led to the creation of Tideways. A Profiling tool that makes performance issues visible, understandable, and actionable.

Built specifically for PHP, Tideways integrates with popular e-commerce platforms and frameworks. It fits into real-world stacks without friction and delivers performance insights teams can act on immediately.

From day one, Tideways has focused on one thing: understanding why applications slow down and enabling teams to address those issues efficiently. That focus still shapes the product today.

Behind Tideways is a small, dedicated team working closely with customers. We value honest communication, practical solutions, and continuous improvement. Most importantly, we build a product you can rely on: in production, during peak traffic, and over the long run.

Ten years in, Tideways remains driven by the same curiosity, care, and passion for performance that sparked its creation.

We’re looking forward to what the next decade will bring!

p.s.: Just in time for our anniversary, a little elePHPant joined the team.

Our Ongoing Commitment to Open-Source

In 2024, Tideways joined the Open-Source Pledge, a movement encouraging tech companies to support open-source maintainers financially. Since then, the initiative has grown rapidly, even earning a collective spotlight on the iconic Nasdaq screen in Times Square.

We believe in the power of open-source to drive innovation, collaboration, and progress. That’s why we continued on our path in 2025 and will take support into account in our planning for the coming years.

Open-source is at the heart of what we do. Many of our team members have contributed to PHP itself and to key open-source libraries. Without these collective efforts, we couldn’t help our customers make their applications faster and more reliable. Supporting the community, with both our time and resources, is therefore second nature to us.

Without them, Tideways would not be able to function the way it does, and we wouldn’t be able to optimize website performance for our customers the way we do. Therefore, it is a given for us to provide support to the community in any manner possible, whether it be through time or financial contributions.

Last year we donated a total of $15,235 to different open-source projects. With four full-time developers in 2025, we remain committed to spending above the pledge’s $2,000 per-developer requirement on open-source projects and maintainers each year.

The dedication and effort that go into open-source work are well worth supporting. In 2025, we continued our commitment to the community by sponsoring several open-source projects.

Our contributions so far include sponsorships for some of PHP’s most essential projects:

  • The PHP Foundation, where we are a founding member.
  • PHPUnit, whose long-term maintenance we’re helping to ensure.
  • Xdebug, which we support as a business sponsor.
ProjectDollar Amount
PHP Foundation12,500 $
Xdebug1,335 $
PHPUnit1,400 $
Total15,235 $

Open-source isn’t just something we use; it’s what we build on. Tideways runs on PHP, and the success of this language is deeply intertwined with our own. We’re grateful to be part of such a vibrant ecosystem and proud to give back to it.

Do you rely on open-source software? You most likely do! Ask your company to also join the pledge. And if you work with PHP, you should really start sponsoring the PHP Foundation!

Thank you for 2025

Foto von Alexas_Fotos auf Unsplash

Conferences, UnConferences, partner days, meetups, developer and community days, hackathons, and trade fairs: 2025 was truly a year of events for us.

Name an event we weren’t at! This (Un)Conference marathon brought countless wonderful encounters. We met many people we wish we could see more often, but everyday commitments tend to make this difficult. We were all the more delighted we could reconnect with so many of you this year.

Another cause close to our hearts is closely linked to this: supporting community events through sponsorships. Many of these gatherings can only happen thanks to sponsors, and we’re proud to play a part in keeping them thriving.

We would like to express our heartfelt gratitude to our customers, partners, colleagues, friends, and families for their ongoing support and dedication. Without you, Tideways wouldn’t be where it is today.

In the spirit of the season, as in previous years, we’ve chosen to donate instead of sending greeting cards.

Each Tideways team member selected a cause close to their heart, and we donated €500 to each.

  • Berliner Kältehilfe: The Berliner Kältehilfe was set up to offer homeless people unbureaucratic additional emergency accommodation during the cold season.
  • Amnesty International: Amnesty International is the world’s largest human rights organisation. Amnesty is independent of governments, political parties, ideologies, economic interests, and religions. To ensure this independence, their human rights work is financed solely from donations and membership fees.
  • Fistula: The non-profit organisation Fistula e.V., based in Germany, is committed to women’s health in Ethiopia and Uganda. It supports organisations and projects that are committed to the holistic prevention, treatment, and reintegration of women with birth injuries.
  • Stiftung Deutsche Depressionshilfe und Suizidprävention: The German Depression Aid and Suicide Prevention Foundation and its Germany-wide network, the German Alliance Against Depression, are working to improve the care of people suffering from depression. They want to contribute to a reduction in suicides and suicide attempts.
  • SOS-Kinderdörfer is an independent, non-governmental, and non-denominational children’s rights organisation that is active worldwide. It has set itself the task of helping abandoned and distressed children into a better future, with a focus on family, education, health, children’s rights, and emergency aid.
  • Deutsche Kinderhospiz Dienste: Together with partners, full-time and volunteer professionals, they are developing a comprehensive range of services in Germany tailored to specific needs. This is based on a modern support structure and a new concept of actively reaching out to affected families. Their nationwide support services provide relief.
  • Brot für die Welt is active in the areas of project work, political work, educational work, and community work. They currently support 2,919 projects in more than 80 countries. Together with partner organisations around the globe, they contribute to overcoming hunger, poverty, and injustice.
  • ROBIN GOOD Familienfonds von Caritas und Diakonie supports children, young people, and their families living in poverty. They help to improve the social, emotional, and health situation of children in precarious living conditions.

We wish you all a Merry Christmas and a happy holiday season!


Vielen Dank!

Konferenzen, UnConferences, Partnertage, Meetups, Entwickler- und Community-Tage, Hackathons und Messen: 2025 war für uns ein Jahr voller Begegnungen.

Dieser (Un)Conference-Marathon brachte viele inspirierende Gespräche mit sich. Wir haben zahlreiche Menschen getroffen, die wir gerne öfter sehen würden; doch der Alltag lässt das leider nicht immer zu. Umso mehr haben wir uns gefreut, dass wir in diesem Jahr wieder mehr in den persönlichen Austausch gehen konnten.

Ein Thema, das uns dabei besonders am Herzen liegt, ist die Unterstützung von Community-Veranstaltungen durch Sponsoring. Viele dieser Formate können nur dank engagierter Sponsoren stattfinden. Wir sind stolz darauf, einen Beitrag zu leisten, damit sie weiter bestehen können.

Wir möchten unseren Kunden, Partnern, Kollegen, Freunden und Familien unseren herzlichen Dank für ihre kontinuierliche Unterstützung und ihr Engagement aussprechen. Ohne Sie wäre Tideways nicht dort, wo es heute ist.

Und ganz im Sinne der Weihnachtszeit haben wir uns, wie schon in den vergangenen Jahren, dafür entschieden, statt Grußkarten zu verschicken, Gutes zu tun.

Alle Tideways-Mitarbeitenden konnten selbst wählen, welche Organisation sie unterstützen möchten. So spendeten wir jeweils 500 € an:

  • Berliner Kältehilfe: Die „Berliner Kältehilfe“ wurde ins Leben gerufen, um obdachlosen Menschen unbürokratisch zusätzliche Notschlafplätze während der kalten Jahreszeit anzubieten. Zahlreiche Kirchengemeinden, Verbände, Vereine und Initiativen bilden mit ihren Notübernachtungen, Nachtcafés, Suppenküchen und Treffpunkten das Netzwerk Kältehilfe.
  • Amnesty International: “Amnesty International” ist die weltweit größte Bewegung, die für die Menschenrechte eintritt. Amnesty ist unabhängig von Regierungen, Parteien, Ideologien, Wirtschaftsinteressen und Religionen. Um diese Unabhängigkeit zu sichern, finanzieren wir unsere Menschenrechtsarbeit allein aus Spenden und Mitgliedsbeiträgen. Unsere Kampagnen und Aktionen basieren auf den Grundsätzen der Allgemeinen Erklärung der Menschenrechte.
  • Fistula: Der gemeinnützige Verein “Fistula e.V.” mit Sitz in Deutschland setzt sich für Frauengesundheit in Äthiopien und Uganda ein. Unterstützt werden Organisationen und Projekte, die sich ganzheitlich für Prävention, Therapie und Reintegration von Frauen mit Geburtsverletzungen engagieren.
  • Stiftung Deutsche Depressionshilfe und Suizidprävention: Die “Stiftung Deutsche Depressionshilfe und Suizidprävention” und ihr deutschlandweites Netzwerk “Deutsches Bündnis gegen Depression” arbeiten kontinuierlich daran, die Versorgung von depressiv erkrankten Menschen zu verbessern. Dadurch und durch zusätzliche Maßnahmen wollen sie zur Abnahme von Suiziden und Suizidversuchen beitragen.
  • SOS-Kinderdörfer: Die “SOS-Kinderdörfer” sind eine unabhängige, nichtstaatliche und überkonfessionelle Kinderrechtsorganisation, die weltweit aktiv ist. Sie haben es sich zur Aufgabe gemacht, verlassene und Not leidende Kinder in eine bessere Zukunft zu begleiten, mit Schwerpunkten in den Bereichen Familie, Bildung, Gesundheit, Kinderrechte und Nothilfe.
  • Deutsche Kinderhospiz Dienste: Gemeinsam mit Partnern, haupt- und ehrenamtlichen Fachkräften entwickeln sie ein flächendeckendes und bedarfsgerechtes Angebot in Deutschland. Eine moderne Hilfestruktur und ein neues Konzept der aktiven Ansprache betroffener Familien bilden dafür die Grundlage. Mit ihren bundesweiten Hilfsangeboten sorgen sie für Entlastung.
  • Brot für die Welt ist in den Bereichen Projektarbeit, politische Arbeit, Bildungsarbeit und Gemeindearbeit aktiv. Sie unterstützen derzeit 2.919 Projekte in mehr als 80 Ländern. Gemeinsam mit Partnerorganisationen rund um den Globus tragen sie dazu bei, Hunger, Armut und Ungerechtigkeit zu überwinden.
  • ROBIN GOOD Familienfonds von Caritas und Diakonie unterstützt in Armut lebende Kinder, Jugendliche und ihre Familien. Sie tragen dazu bei, dass sich die soziale, seelische und gesundheitliche Situation von Kindern in prekären Lebensverhältnissen verbessert.

Wir wünschen allen ein frohes Weihnachtsfest und schöne Feiertage!

Tideways 2025.4 Release

In our fourth Release of 2025, we included PHP 8.5 support on the day of its release and Heartbeats to monitor your application’s pulse more closely than ever. If something is offbeat, you’ll receive timely alerts.

We improved alerting by introducing fine-granular transaction level response time and made automatic tracepoint triggers more powerful.

Summary

PHP 8.5 Support

PHP 8.5 has been released last week and Tideways – as always – supports it from the start with the PHP Extension Release 5.30.0.

Heartbeat Monitoring per Transaction

Some transactions (think cron jobs, payment completion, webhooks) are so critical for web applications that it is a sign of failure or at least a problem when no data was processed for a few minutes or hours.

Tideways can now send notifications on missing transaction check-ins at a granularity of 1 minute and more. For any given transaction, you can configure an individual check-in interval in the transaction settings.

Heartbeat Monitoring

Furthermore, we have renamed the “Missing Data” notifications on the service level to “Heartbeat Monitoring” because this name is clearer and well established.

Check our documentation for more detail.

Improved Alerting on Transaction Response Times

Alerting for response time thresholds on a per-transaction basis was previously exclusive to only bigger plans. We have completely rebuilt how it works to allow a much wider audience to benefit from this feature.

You can now configure the notification under transaction settings, just like all the other transaction-level notifications.

Improved Alerting

You will notice an added line in the performance chart for the transactions on which you enabled this feature.

Response Times

When the response is slower than expected for 5% of all requests, then an incident is created and notifications may be sent:

Improvement Transaction List Filters

Because of these new transaction notification options for heartbeats and response times, we worked on a few small improvements for the Transaction settings list:

  • You can now see at a glance which notifications are set per transaction.
  • There are filters available to only select transactions with selected notifications configured.

More nodes in Callgraphs

Callgraphs can become quite complex quickly. After all, every function call is tracked. With modern frameworks or ecommerce solutions, this can be hundreds or thousands of different functions being recorded.

Visualizing this data can be a challenge. Which is why we limit the number of visible nodes by a simple algorithm: take the three most costly function calls and build the graph upwards from there. The full list of function calls has always been available using the table on the left anyway.

But since it is helpful in some cases to see a wider range of nodes, we added an option to change this start-count using a dropdown. This might be useful, e.g., with long-running scripts, where there might be more than a handful of important calls.

Automatic Tracepoints Trigger

After introducing automatic tracepoints in the last release, there is now another strategy to create a tracepoint automatically: It picks one of the seven most high-impact transactions that are rotated every week.

This will provide you with callgraph insights into different parts of the application automatically, and in combination with the trace history this data is available over a long period of time as well.

This strategy is available for Business and Enterprise plans and is used automatically for triggers created for new services. Alternatively you can select the strategy from the settings called “Rotate between highest impact transactions”.

More Stacktraces on Spans

We’ve changed the default INI settings that control when stack traces are added to spans in a trace to 1 ms (from previously 3 ms) and increased the stack depth to 10 (previously 5). Overall, this should make stack traces more valuable for pinpointing performance problems.

PDO Transactions

Long-running database transactions can have a significant impact on database performance and should thus be active as long as necessary but as short as possible. Tideways already included individual spans for BEGIN and COMMIT / ROLLBACK queries, indicating the start and end of a transaction and the COMMIT performance.

Now Tideways will also create a “meta span” spanning the entire transaction, making it easier to see at a glance which queries are part of the transaction and for how long the transaction was active. Since rollbacks can be particularly expensive and generally indicate issues, the spans for rolled-back transactions will also be marked as “errored”.

PDO Transactions

Incoming Network for Predis

When using the predis/predis library, spans will now contain a Network (incoming) annotation, just like HTTP calls or MySQL queries.

Magento Sections

To improve the efficiency of the page cache, Magento retrieves dynamic user-specific components of the resulting page in bulk from a special “Section Loader” endpoint. Traces for this endpoint now contain spans for each component loaded, helping you find out which components are particularly expensive to calculate.

Minor PHP Extension Improvements

This release, as always, contains some minor improvements to various features. Amongst those is extending support for the automated worker instrumentation to Yii 2 Queues, support for transaction name detection with Slim 4 and extended detection of email addresses in error messages and URLs in Tideways Daemon to prevent them from leaving your infrastructure.

Check our detailed changelog for more detail.

Time to get started with Profiling! With our free trial.

Meet Benjamin at the Symfony User Group Meetup

Benjamin will be a guest speaker at the Symfony User Group Meetup taking place in Cologne at the OPEN Digitalgruppe, Neusser Straße 27-29, on November 6th, starting at 18:30.

The event will start with a get-together and a welcome, and at 19:10 Benjamin will give his talk:

How native lazy objects will change Doctrine and Symfony forever

Starting with PHP 8.4, you can implement lazy loading and proxy objects with native PHP functionality with little overhead and no code generation required. Both Doctrine and Symfony have historically used the proxy pattern with solutions and workarounds built in PHP. In this talk, I will explain PHP 8.4’s native lazy objects and how they will be a game changer for both Doctrine and Symfony going forward.

After that, there is time for food, drinks, and networking.

Write to him at [email protected] if you want to make sure that you don’t miss each other.

Meet me at Shopware Women in Tech 2025 in Cologne

The countdown is on! It really is; check out the website. On November 13th I’ll be at Smartvillage in Cologne, a location that is as well suited to inspiring talks and exchange as it can be. They call it “functional jungle”: it is open, flooded with light, and inside continues what was created outside the Carlswerk with the urban garden project CARLsGARTEN; close to nature in the midst of concrete. It is organized by Shopware, with the goal to empower women in tech.

At 16:00, the event starts with a get-together where everyone can meet and start to connect. At 16:30, the workshop session begins, followed by a discussion on the Gender AI Gap, starting at 17:30. Barbara Lampl, data & AI strategist, will elaborate on how diverse teams can multiply their ROI and why private use doesn’t tell the whole story. There’s time for food and drinks from 18:30 onwards and for deepening the discussions and connecting further.

Write to me at [email protected] if you want to make sure that we don’t miss each other. Register if you want to take part: https://www.shopware.com/en/events/shopware-women-in-tech/.

Meet Benjamin at Pimcore Community Dev Days 2025!

Benjamin will be at Pimcore Community Dev Days in Frankfurt on November 13th and is eager to talk about PHP performance and profiling!

This developer event uniting the Pimcore, Symfony, and PHP communities takes place at the Holiday Inn Hotel Frankfurt Airport, organized by +Pluswerk.

It’s one of the key topics and an important one: PHP performance optimizations. Benjamin can give you in-depth insights stemming from designing and developing a PHP profiling, monitoring, and exception tracking software and being active in the PHP community, contributing to open-source.

Let him know you’ll be there—drop us a note at [email protected] if you’d like to connect in person.

Tideways supports the unKonf 2025 in Mannheim

Tideways supports the unKonf 2025 in Mannheim

Spontaneity sparks innovation—and that’s what the unKonf, organised by our partner bitExpert AG, is all about. As long-time supporters of community-driven events, we’re happy to sponsor the unKonf in Mannheim again, this year taking place October 11th, 2025.

This Barcamp-style gathering brings together developers and tech enthusiasts for a day of spontaneous sessions and collaborative knowledge sharing around software and web development.

While we won’t be able to attend this time, we’re glad to help make the event happen and to support the amazing work of the organizers and everyone taking part.

To everyone joining: have a great time exchanging ideas, giving impromptu talks, and shaping the schedule together. We’ll be cheering you on from afar!

We’re supporting Doctrine by organizing the Core Team Meetup in Paris!

We’re organizing the upcoming Doctrine Core Team Meetup, taking place October 7-9 at the JoliCode Office in Paris.

The goal: bring the team together in person to discuss, collaborate, and push Doctrine forward. These meetups are a chance to focus deeply on improvements, exchange ideas, and strengthen the project for the entire community.

Why we need your support

Organizing these meetups wouldn’t be possible without sponsors. If you’d like to support Doctrine, you can do so via GitHub Sponsors or OpenCollective.

Your contributions make it possible to organize hackathons and core team meetups, covering 3–4 days of accommodation, meals, and travel. If the Doctrine team increases their funds with your help, we could meet more often and in larger groups.

Why it matters

Doctrine thrives because of the passion and dedication of its contributors.

By supporting the Doctrine team, you’re helping to bring people together, multiplying this enthusiasm, and ensuring the continued progress of one of the most widely used projects in the PHP ecosystem.

We’re excited to see what great teamwork and fresh ideas will come out of Paris—and we look forward to sharing the results with you!

Why we do it

We like supporting the open-source community because it’s part of our Tideways-DNA. Apart from Doctrine, we’re committed to supporting other open-source endeavors.

Join Benjamin at Shopware Community Day 2025!

Date: September 16th, 2025

Location: Confex, Cologne

This year’s event marks a milestone, namely 25 years of Shopware. It’s the perfect age: you have built up a wealth of experience and are still full of innovative spirit. It promises to be a day filled with inspiration and community spirit.

Event Highlights:

  • Three Stages:
    • Main Stage: Visionary keynotes shaping the future of digital commerce.
    • Tech Stage: Deep dives into the latest technologies and tools.
    • Commerce Stage: Actionable insights and real-world success stories.
  • Networking Opportunities: Connect with merchants, developers, agencies, and tech partners from around the world.

Benjamin is looking forward to engaging discussions on performance, observability, and PHP.

Don’t miss the chance to connect and schedule an appointment beforehand: [email protected].

Tideways sponsors PHP Developer Day 2025 in Dresden

The elePHPant trumpets and invites everyone from PHP newbie to PHP expert to come to Dresden on September 19th and enjoy a day full of inspiring talks, knowledge-sharing, and networking in a friendly atmosphere.

We can’t be there this year, although we would like to be, and talk to you about our pet subject performance and profiling PHP applications; but we’re happy to be sponsoring PHP Developer Day, organized by PHP Usergroup Dresden e.V.

Our roots are deeply in the PHP community—that’s why we love giving back by supporting community-driven events.

To everyone joining: have a lovely day in Dresden, filled with exchanging ideas and advancement of the open-source language we rely on for our various endeavors. There are still a few tickets available: https://phpdd.org/#tickets.

Meet us at the maxcluster partner day 2025

Our partner maxcluster is staging their partner day, and Benjamin and Diana from the Tideways team will be there!

We’re eagerly awaiting the event that will take place on September 24th and 25th.

September 24th, 16:00:

Benjamin will give a talk on “MISS oder HIT: Den Shopware HTTP-Cache meistern”.

His presentation will entail how the Shopware cache works, how to measure its efficiency, identify negative impacts, and share strategies to get the most out of it.

The partner day is packed with inspiring talks and plenty of opportunities for direct exchange. Come by and chat with us about PHP performance and application profiling with Tideways—we’d love to connect! To make sure we meet, feel free to drop us a line at [email protected].

Also, we would be happy to tell you about the additional services we offer you as a maxcluster partner. This includes an onboarding session via Zoom for every customer.

This is a great chance to get to know us better and see how Tideways can help boost your PHP performance.

Meet us at DMEXCO 2025

We’re at DMEXCO – Digital Marketing Exposition & Conference in Cologne, on September 17th and 18th!

Ruth and Diana from the Tideways team will be there and look forward to meeting you.

We’re expecting two packed days full of inspiring talks, innovative tech solutions, and great networking opportunities.

You’ll find us right in the middle of it all – ready to talk about performance monitoring, PHP profiling, our partner program, and how Tideways helps you gain deep insights into your applications.

Want to make sure we don’t miss each other? Drop us a message at [email protected] and we’ll set up a time to meet.

Whether you’re curious about getting started with Tideways or want to explore advanced features, this is a great chance to connect with us in person.

See you at DMEXCO 2025 in Cologne – let’s talk performance!

Meet me at the Hypernode Developer Meet-Up in Amsterdam!

Benjamin and Rik from Sparkables join the Hypernode Developer Meet-Up on September 12th, 2025, from 15:00-19:00 in the Hypernode Office in Ertskade 109, Amsterdam.

They are eager to share their latest findings on Magento and PHP backend performance—all uncovered through deep profiling data.

Profiling is a powerful way to challenge the assumptions we make about our code. In this talk, they’ll explore surprising performance bottlenecks uncovered in case studies. The learnings they take away are applicable for similar cases.

Meet us in Amsterdam June 16-18th

Celebrate 30 years of PHP with us in Amsterdam!

Meet Benjamin, Volker, and Tim at the PHP User Group Meetup in Amsterdam, June 17th! It’s special anyway, but with the anniversary this year it’s extra-special.

Right after PHPVerse2025, we’re keeping the energy high with a special edition of AmsterdamPHP. We’re looking forward to Nils Adermann (Co-Founder, Packagist) and Nicolas Grekas (Core Developer, Symfony) and other familiar faces from PHPVerse!

We’re in Amsterdam Monday to Wednesday, so we can meet at or around the community event. Write to us at [email protected] if you want to make sure that we don’t miss each other.

Tideways 2025.2 Release

In our second Release in 2025, we’re introducing additional performance insights to help you identify and resolve even more Bottlenecks faster and more effectively.

Detailed information is now integrated in our Weekly Report, namely the number and types of the observations discovered in your application. We’re eager to make it easier than ever to stay on top of optimizations.

If some of the Bottlenecks should not match your particular project, you now have the option to ignore them, giving you greater control and flexibility.

We’ve also streamlined Checks and Alerts with a more intuitive service and environment selection UI – so setup is simpler and more user-friendly.

The Profiler was extended: We’ve added automatic insights for MySQL queries, flagging cases with missing or inefficient indexes. You’ll also get better visibility into session handler behavior, helping you catch subtle performance issues earlier.

More context. Smarter detection. Fewer surprises. Browse through our latest Release and keep your stack running smooth.

Dive into the Release and take your application performance to the next level.

Summary:

Bottlenecks in Weekly Report

Integrated into the Weekly Report, each customer can now find the statistics on the various observations, namely the number and type that were detected in their application during the past week. We have chosen the light bulb as symbol.

Mute Bottlenecks

Tideways’s list of observations has been growing steadily. If some of those don’t match your particular project, you now have the option to ignore them and to decide that they will no longer be displayed in your list by default giving you greater control and flexibility.

New Automatically Detected Bottlenecks

  • Significant sleep/usleep usage You will get alerted if traces take a long time calling sleep/usleep and removing or optimizing can improve performance.
  • Shopware6 / Consider using Elasticsearch/OpenSearch This Bottleneck highlights the need to consider using Shopware with Elasticsearch, especially given the potentially slow SQL aggregation queries (for price and properties).
  • Symfony ErrorHandler::handleError If lots of deprecations, notices or warnings are being triggered, Symfony’s error handler can slow down requests significantly. Take a deep dive with our blog post on Composer Patches.
  • ORM Query Parsing takes significant time Frequent use of Doctrine’s query parsing function can negatively impact performance.
  • Doctrine ORM: Entity Metadata not cached This suggests metadata caching may not be enabled—something strongly recommended for production uses of Doctrine ORM.
  • Refactor use of array_unique The Bottleneck array_unique suggests inefficient use of arrays; using unique identifiers as keys to maintain uniqueness automatically during insertion would be a suitable remedy. Looking for more details? Read our related blog post.
  • wp_nav_menu usage takes up a significant amount of time Heavy use of wp_nav_menu may affect performance—consider using the Automatic plugin to cache navigation menus.
  • Slow Google Analytics/Tag Manager Plugin Shopware, Magento and WordPress sites often use plugins integrating with Google Tag Manager. Caching these API calls or using custom implementations can increase performance significantly.

Overhaul of Service/Environment Filter for Checks & Alerts

You can now select which services and environments should trigger notifications via a drop-down menu. That means you don’t have to enter the complex services and environments filter language anymore to make this selection.

MySQL Statistics in Query Spans

When using MySQL, SQL spans in the timeline will now include additional annotations. The new mysql.index_usage annotation indicates when MySQL reported that no (none) or a bad index (bad) was used by the query.

The “Network” annotations known from HTTP spans are now also available on MySQL spans, giving better visibility into the size of query payloads and the amount of data fetched.

Insights on Session Handlers

During session initialization, it’s important to measure how long the process takes ****to ensure optimal performance. Blocking sessions is a regular bottleneck in PHP applications that Tideways points out.

A key configuration impacting session performance and blocking is the INI setting session.save_handler.

Traces in Tideways that open a session now show the save handler that is being used.

With this you can more get more insights on the current session behavior in your application.

For “user”-implemented session handlers, Tideways provides additional clarity on exactly what storage mechanism is being used by highlighting the concrete class.

Improve WordPress service and transactions

Several enhancements have been made to improve WordPress service performance and transaction handling:

WordPress cronjobs (wp-cron) are now fully integrated with Tideways’ transaction detection, allowing Tideways to capture each individual cronjob’s performance metrics.

The admin and the user interface of a WordPress application are now separated into two services automatically. This allows a clear distinction of their respective performance. Usually the user interface must remain fast and responsive, and for the admin interface performance is less critical.

Layer Metrics API in PHP Extension

Support has been added to make the raw layer metrics accessible via a new API. This means that the timings of the various layers (e.g. SQL Database, External HTTP calls) are now available to the application itself.

The primary use-case we have in mind for this API is the Server-Timing HTTP response header and its integration into frontend performance testing tools.

This feature is made available through the new method \Tideways\Profiler::getLayerMetrics().

This enhancement empowers developers and users to better integrate these information with other performance tools.

Time to get started with Profiling! With our free trial.

Our Open-Source Contributions in 2024

The effort put in by those involved in open-source work is definitely worth supporting. In 2024, we have sponsored a number of open-source projects: We are a founding member of the PHP Foundation and have been sponsoring it for quite some time now. We are also sponsoring the development of PHPUnit because we want to support its long-term maintenance, as it’s a crucial component of our toolkit at Tideways. As a business sponsor, we are providing support for the advancement of Xdebug.

As a company deeply rooted in the PHP community and with team members who have made significant contributions to the PHP language itself, as well as to various open-source libraries, open-source projects are important to us. Without them, we wouldn’t be able to give our customers hints how to optimize website performance as we do. Hence, it is a given for us to offer assistance to the community in any feasible manner, be it through time or financial contributions.

Every year, we invest more than $2,000 per full-time developer – we have five – in open-source projects and maintainers and we are planning to continue this engagement. To publicly confirm this commitment to our various open-source contributions, Tideways joined the Open-Source Pledge in 2024. What’s more, it’s a great way to show appreciation for these endeavors. We are not only relying on open-source software in our product Tideways, but we’re also building our business on top of the open-source language PHP and its continued success. We’re proud to be part of this vibrant community and to be able to contribute to its growth.

ProjectDollar Amount
PHP Foundation$14,750
Xdebug$1,260 (1,000 GBP)
PHPUnit$1,252 (1.200 EUR)
Total (approx.)$17,262

Do you rely on open-source software? You most likely do! Ask your company to also join the pledge. And if you work with PHP, you should start sponsoring the PHP Foundation!

Thank you for 2024

Picture by Joshua Aragon from Unsplash

The year 2024 was special for us in several respects. It’s been a decade since the unveiling of Tideways’ predecessor, and we’ve come a long way since then.

We would like to express gratitude to our customers, partners, colleagues, friends, and family for their ongoing support and dedication. Without you, we wouldn’t be where we are today. We are particularly pleased to be able to welcome many new partners this year.

This was also the year we set out for new shores: Our team has experienced a growth of two individuals, and we are constantly striving to improve and evolve our software.

To capture the true holiday spirit, we decided, as in the years before, to donate instead of writing greeting cards.

All Tideways employees could choose their own purpose, and so we donated €500 each for:

  • Save the Children: Save the Children is the largest independent children’s rights organisation in the world and advocates for the rights of all children to health and survival, school and education as well as protection from violence and exploitation.
  • Berliner Kältehilfe: The Berliner Kältehilfe was set up to offer homeless people unbureaucratic additional emergency accommodation during the cold season.
  • Amnesty International: Amnesty International is the world’s largest human rights organisation. Amnesty is independent of governments, political parties, ideologies, economic interests and religions. To ensure this independence, their human rights work is financed solely from donations and membership fees.
  • Fistula: The non-profit organisation Fistula e.V., based in Germany, is committed to women’s health in Ethiopia and Uganda. It supports organisations and projects that are committed to the holistic prevention, treatment and reintegration of women with birth injuries.
  • Bonner Tafel: Saving food – helping people. That is the aim of the non-profit organisation Bonner Tafel e.V. In Germany, a lot of edible food is thrown away every day. Volunteers collect this food and distribute it to Bonn citizens in precarious situations.
  • Notpfote: rescues animals from war and earthquake zones.
  • Stiftung Deutsche Depressionshilfe und Suizidprävention: The German Depression Aid and Suicide Prevention Foundation and its Germany-wide network, the German Alliance Against Depression, are working to improve the care of people suffering from depression.They want to contribute to a reduction in suicides and suicide attempts.

We wish you all a Merry Christmas and a Happy Holiday Season!


Vielen Dank!

Das Jahr 2024 war in vielerlei Hinsicht besonders für uns. Zehn Jahre sind ins Land gegangen, seit wir den Vorgänger von Tideways vorgestellt haben. Seitdem haben wir viel erreicht.

Wir möchten unseren Kunden, Partnern, Kollegen, Freunden und Familien für ihre andauernde Unterstützung und ihr Engagement danken. Ohne sie wären wir nicht da, wo wir jetzt sind. Wir freuen uns besonders darüber, dass wir dieses Jahr viele neue Partner begrüßen durften.

In diesem Jahr sind wir auch zu neuen Ufern aufgebrochen: Unser Team ist um zwei Personen gewachsen. Auch dieses Jahr haben wir wieder kontinuierlich daran gearbeitet, unsere Software zu verbessern und weiterzuentwickeln.

Um die wahre Weihnachtsstimmung einzufangen, haben wir beschlossen, wie in den Jahren zuvor, zu spenden, anstatt Grußkarten zu schreiben.

Alle Tideways-Mitarbeiter konnten sich aussuchen, an welche Organisation sie ihr Weihnachtsbudget geben wollen. So spendeten wir jeweils 500 € für:

  • Save the Children: “Save the Children” ist die größte unabhängige Kinderrechtsorganisation der Welt und setzt sich für die Rechte aller Kinder auf Gesundheit und Überleben, Schule und Bildung sowie Schutz vor Gewalt und Ausbeutung ein.
  • Berliner Kältehilfe: Die „Berliner Kältehilfe“ wurde ins Leben gerufen, um obdachlosen Menschen unbürokratisch zusätzliche Notschlafplätze während der kalten Jahreszeit anzubieten. Zahlreiche Kirchengemeinden, Verbände, Vereine und Initiativen bilden mit ihren Notübernachtungen, Nachtcafés, Suppenküchen und Treffpunkten das Netzwerk Kältehilfe.
  • Amnesty International: “Amnesty International” ist die weltweit größte Bewegung, die für die Menschenrechte eintritt. Amnesty ist unabhängig von Regierungen, Parteien, Ideologien, Wirtschaftsinteressen und Religionen. Um diese Unabhängigkeit zu sichern, finanzieren wir unsere Menschenrechtsarbeit allein aus Spenden und Mitgliedsbeiträgen. Unsere Kampagnen und Aktionen basieren auf den Grundsätzen der Allgemeinen Erklärung der Menschenrechte.
  • Fistula: Der gemeinnützige Verein Fistula e.V. mit Sitz in Deutschland setzt sich für Frauengesundheit in Äthiopien und Uganda ein. Unterstützt werden Organisationen und Projekte, die sich ganzheitlich für Prävention, Therapie und Reintegration von Frauen mit Geburtsverletzungen engagieren.
  • Bonner Tafel: Lebensmittel retten – Menschen helfen. Das ist das Ziel des gemeinnützigen Vereins Bonner Tafel e.V. In Deutschland werden täglich viele genießbare Lebensmittel weggeworfen. Die ehrenamtlichen Mitarbeiter:innen sammeln diese Lebensmittel ein und verteilen sie an Bonner Bürger:innen in prekären Lebenslagen.
  • Notpfote: rettet Tiere aus Kriegs- und Erdbebengebieten.
  • Stiftung Deutsche Depressionshilfe und Suizidprävention: Die Stiftung Deutsche Depressionshilfe und Suizidprävention und ihr deutschlandweites Netzwerk Deutsches Bündnis gegen Depression arbeiten kontinuierlich daran, die Versorgung von depressiv erkrankten Menschen zu verbessern. Dadurch und durch zusätzliche Maßnahmen wollen sie zur Abnahme von Suiziden und Suizidversuchen beitragen.

Wir wünschen allen ein frohes Weihnachtsfest und schöne Feiertage!

Foto von Ksenia Yakovleva auf Unsplash

Tideways joins the Open Source Pledge

Tideways is joining the Open Source Pledge because we want to make a public commitment on our various open source contributions. Not only do we rely on open source software in our product Tideways, we are also building our business on top of the open source language PHP and its continued success. 

The mission of the recently started Open Source Pledge initiative is to establish a new social norm in the tech industry of companies paying Open Source maintainers.

As a company that is deeply rooted in the PHP community and with team members who have made significant contributions to the PHP language itself, as well as to various open source libraries, open source projects are dear to our hearts. Without them, Tideways would not be able to function the way it does, and we wouldn’t be able to optimize website performance for our customers the way we do. Therefore, it is a given for us to provide support to the community in any manner possible, whether it be through time or financial contributions. Last year we donated a total of $ 24.182 to different open-source projects, and we will continue to spend above the pledges requirement of $2.000 per full-time developer on open source projects and maintainers every year from now on.

In 2023, we have sponsored the following open source projects: We are a founding member of the PHP Foundation and have been sponsoring it for quite some time now. We are also sponsoring the development of PHPUnit because we want to support its long-term maintenance, as it’s a crucial component of our toolkit at Tideways. As a business sponsor, we are providing support for the advancement of Xdebug. In 2023 Tideways was also a premium sponsor of bref, a serverless runtime for PHP on AWS Lambda.

ProjectDollar Amount
PHP Foundation$15.000
bref$6.721
Xdebug$1.341
PHPUnit$1.120
Total$24.182

Do you rely on open source software? You most likely do! Ask your company to also join the pledge. And if you work with PHP, you should really start sponsoring the PHP Foundation!

An AI would never be able to dive this deep into technical topics surrounding PHP performance! Follow us on LinkedIn or X and subscribe to our newsletter to get the latest posts.

Let’s dive in and find out what is causing performance bottlenecks! Without Tideways, you’re likely to fish in murky waters attempting to figure it out. Try our free trial today and be enlightened.

Tideways renews its commitment to sponsoring the PHP Foundation

As a founding member and major contributor to the success of the PHP Foundation, Tideways sponsored the Foundation with 12,000 USD in 2023.

As a member of the administrative board of the PHP Foundation, the advancement of the open source language PHP is key for us. In the founding year, we supported the Foundation with 10,000 USD and followed this up in 2022 with another 15,000 USD. As a major sponsor, it is our declared goal to uphold our commitment to PHP and the foundation.

Since it was established in 2021, the Foundation has been able to raise 1.2 million USD to continue the development of PHP. 

Compared to the past, when only two or three people were earning a salary to work on the PHP language, the funds have now enabled the Foundation to pay 10 skilled people to work as official PHP developers. A great success!

The Foundation is looking for sponsors to join more than 1,600 donors to contribute to the future of PHP.

Flamegraph Feature Preview Christmas Present, Thank you for 2023!

As a Christmas present, we have started rolling out a new feature for the Profiler: flamegraph rendering in addition to the existing Timeline and Callgraph. This is a feature preview and will see more changes in Q1 of 2024. For now, only customers with the most recent plans (Tideways 6) can access them, or you can view them in traces of the „demo“ organization.

Let us know what you think of it!

This also gives you a first insight into our roadmap for 2024, as we plan to build on the flamegraph view to provide profiling information across many traces. We are looking forward to it already!

The Tideways team wishes you merry Christmas, happy holidays and a successful “slide into the new year” as is German custom.

As in previous years, every Tideways employee could choose their own purpose and so we donated 500 € each for

  • Doctors without Borders (German Chapter) is a charity that provides humanitarian medical care
  • Kältehilfe Berlin helps homeless people in Berlin who are threatened by cold or hot weather with food and a bed to sleep in.
  • Zonta Club Bonn – is a service organization with the mission of Building a Better World for Women and Girls, in support of Sustainable Development Goal 5
  • Robin Good is a family fund in Bonn supporting kids and their families that are living in poverty. They provide financial help to pay for school trips, school bags or for other emergencies.
  • ZeSaBo: The charitable Central Warehouse for Donations in Bonn (ZeSaBo) accepts donations and makes them available free of charge to private and institutional customers who care for people in need.

PHP Performance in 2022: A Year in Review

Now that 2022 is over, its time to review newsworthy topics about performance in the PHP language.

As this is the first time we are doing this type of blog post, please let us know your thoughts about this format and if we forgot important topics.

PHP 8.2 release 

With each new release of PHP, there are performance improvements to the engine or individual parts of the language. A list of performance related changes in the PHP 8.2.0 release from this year includes the following topics, discussed in more detail below:

  • Packed Arrays (List Arrays) are stored in a more efficient data structure, leading to reduced memory footprint and better performance.
  • stripos() performance improved significantly
  • Performance of different functions in mbstring extension improved
  • new memory_reset_peak_usage() function introduced

Tideways also already supports PHP 8.2 and a handful of customers are already running it in production.

More efficient packed arrays (lists)

Arrays in PHP are lists, hashmaps or both at the same time. For the “array as list with items indexed by 0” use case, PHP 8.2 ships with a more memory-efficient representation, contributed by Dmitry Stogov in #7491

This change significantly reduces the memory overhead of the array structure.

A test script that creates an array list of integers with 100 items reduces memory usage from 4,3 MB to 2,3 MB (3v4l.org):

<?php

function build_list() {
    $list = [];

    for ($i = 0; $i < 100000; $i++) {
        $list[] = $i;
    }
}

var_dump(memory_get_peak_usage() / 1024 / 1024);

stripos() performance improved

Before PHP 8.2, stripos would lowercase the string and then use strips internally, which has suboptimal performance semantics for a few edge cases.

In PHP 8.2 Ilija Tovilo added a custom stripos implementation in PR #7852 that exhibits better performance characteristics for all use-cases.

Performance of different functions in mbstring extension improved

Alex Dowad is consistently working on improving the mbstring extension and PHP 8.2 includes a large range of PRs that increase the performance of different functions in mbstring for different character sets.

New memory_reset_peak_usage() function introduced

With the new function memory_reset_peak_usage() contributed to PHP 8.2 by Patrick Allaert in #8151, the value for the memory_get_peak_usage() resets to the currently used memory. This function is helpful for PHP scripts that perform multiple tasks, such as daemons, workers and cronjobs, to accurately measure each task’s peak memory impact.

Franken PHP

A new experimental web server for PHP was released called FrankenPHP. It is written in Go and uses the Embed SAPI to run PHP requests as threads within the Go web server.  

The interaction between Go and PHP is possible with a recent 8.2 version and higher, It also requires  PHP to be compiled with ZTS (Zend Thread Safety). 

FrankenPHP is an interesting project to watch because it is the first time a „SAPI“ directly includes a powerful web server (based on Caddy). This could simplify deployment of PHP applications compared to running both Nginx/Apache and PHP-FPM.

FrankenPHP is also the only PHP SAPI that provides HTTP 103 Early Hint support to increase performance for certain sites.

Revolt Event Loop released stable version

With PHP 8.1 Fibers were introduced to allow cooperative multi-tasking. Now in 2022, the first projects are now building on Fibers to provide new frameworks and features to PHP users.

The revolt/event-loop  is a Composer package that provides the basic building blocks for a Fiber-based event loop. It released the first stable version 1.0 in November 2022.

React-PHP and amphp are currently integrating Revolt in their event loop implementations.

Did we miss anything important? Let us know [email protected] or @tideways on Twitter.

Photo by Jason Leung on Unsplash

Tideways 2022.1 Release

This new release of Tideways includes tracking exceptions with codes, improved notifications, improved trace filtering and sorting, several new features for the Callgraph Profiler and changes to the PHP extension.

Exceptions with Codes

Previously when an exception was tracked by Tideways that had a non-zero Exception code, then this code was not transmitted to Tideways as additional debugging information. If your application code uses Exception codes to convey information this then from PHP Extension 5.4.36 and daemon 1.7.24 Tideways will collect and show it:

Improved Notifications

A few improvements to notifications are in this release.

The response time and error rate notifications now only trigger if a minimum number of requests / minute threshold was crossed. This avoids flapping notifications during the times your application has low traffic, for example nights and weekends. For all existing notifications the threshold has been retroactively set to 10 requests / minute, for new ones it starts at 25 requests / minute.

For the New Error/Exception notification there is a new filter to notify or suppress errors by their lifecycle status: New, Reopened or still open after release.

Notifications sent to integrations also include this lifecycle kind in their messaging:

Lastly, when previewing an integration in the configuration, there is now a visual feedback the preview was triggered.

Improved Trace Filtering

In addition to pre-defined ranges of milliseconds, the response time, SQL duration and other response and count based filters in the Search Traces UI now allow to specify custom ranges with minimum and maximum values.

In addition to sorting by date or response time, traces can now be sorted by Memory Usage:

New Features in Callgraph Profiler

The folding of function calls has been improved by rendering dedicated nodes in the callgraph that state “number of folded calls (click to expand)”. This textual representation gives a much better clue what call folding is about and how you can work with it in the callgraph. By clicking on a folded call notice, the hidden calls in the chain will become visible.

The Profiler now gives a little hint about compiler optimizable functions. To avoid falling into a micro optimization trap, this hint is only shown when the calls are responsible for at least 5% of a requests response time, starting at which case the compiler optimization could realistically provide a benefit.

The Tideways reference documentation contains a new page explaining Compiler Optimized Functions in detail and how to automatically benefit from this optimization by using php-cs-fixer.

New and Updated Instrumentation in PHP Extension

With the release of PHP Extension version 5.4.38 and two previous releases in the last few months a number of new automated instrumentation is now included in Tideways:

  • Support for detecting the Glue API service in Spryker based applications
  • Support for argument capturing entity names from Shopware 6 Data Access Layer APIs (Changelog)
  • Elasticsearch Query Payloads now get truncated to a maximum of 4000 characters to avoid extremely large search queries from slowing down serialization and transmission of traces to the daemon and breaking rendering in the trace UI.
  • Timeline Profiler Spans created with the programmatic \Tideways\Profiler::createSpan API now receive special handling in the UI and are clearly marked as using the custom API.

Shopware 6 Benchmarking

In collaboration with Shopware we have released the first beta version of a new open-source tool for benachmarking and load-testing Shopware 6 stores using pre-defined and configurable scenarios and user behavior patterns. See this example PDF report for a demo shop.

Thank You!

Another year draws to a close and more than usual, the end of the year is the time to be thankful.

We want to thank all our customers, partners, colleagues, family and friends and wish you a merry Christmas, great holidays and a successful “slide into the new year” as is German custom.

This year has been hard for many people in our world with the ongoing COVID pandemic, wars and natural disasters. Therefore, we decided to donate to charitable organizations instead of writing greeting cards and really hope that catches everyone’s holiday spirit.

As in previous years, every Tideways employee could chose their own purpose and so we donated 500 € each for

  • Fistula e.V.: This charitable organization stands up for women’s health in developing countries. They support projects and organizations in Uganda and Ethiopia that care for prevention, treatment and re-integration of women with birth-injuries.
  • Kältehilfe Berlin helps homeless people in Berlin who are threatened by cold or hot weather with food and a bed to sleep in.
  • Lebenshilfe Bonn supports citizens with disabilities by providing housing, education and care.
  • Robin Good is a family fund in Bonn supporting kids and their families that are living in poverty. They provide financial help to pay for school trips, schoolbags or for other emergencies.
  • UNICEF supports the worldwide COVAX campaign to provide COVID-19 vaccination to people everywhere in the world.
  • UNO Flüchtlingshilfe (UN Refugee Agency) helps to protect refugees from harm and supports them to find a better future for themselves. Their focus this year are refugees from Afghanistan, Ethiopia and Bangladesh.
  • ZeSaBo: The charitable Central Warehouse for Donations in Bonn (ZeSaBo) accepts donations and makes them available free of charge to private and institutional customers who care for people in need.

Photo by Myriam Zilles on Unsplash

2021.3 Release

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.

Trace History

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.

Tideways 2021.2 Release

This quarterly release of Tideways includes External HTTP Monitoring, Observations about PHP Metrics and Application Configuration, a redesigned Callgraph Compare screen, the ability to name traces, a new GitHub app to synchronize users into an organization and many other features.

Update to PHP Extension 5.4 and Daemon 1.7 to access all new features of this release.

In this blog post we will provide a detailed overview of all the changes. We have also recorded a webinar that summarizes and shows all these features if you prefer video.

We also made a decision not to use the seasons for naming releases as Summer/Winter can mean something entirely different depending on your hemisphere. Instead we will now number our quarterly releases with the year as a prefix, starting with 2021.2 for this release.

External HTTP Monitoring

Almost every application needs to integrate with one or many other applications through HTTP-based APIs. These integrations are often the cause of failures and slowdowns and deserve thorough monitoring. 

Tideways now supports this with a minute by minute monitoring of every external HTTP host that your application communicates with, recording typical average response times and problem response times and the failure rate of HTTP 500+ requests in proportion to successful requests.

Each HTTP host can be viewed in detail where a list of all traces calling the host are listed in every plan. In the pro plan Tideways also tracks the performance of requests to the external HTTP host over time.

For HTTP Hosts that are monitored by a Service within the same Tideways project you can manually link them to each other through the Services Settings page by linking the primary hostname. The UI then allows to simply switch from HTTP Monitoring directly to the service.

Observing PHP and Application Metrics

Performance does not solely depend on code and databases, but also on PHP and Application configuration and metrics. The most important configuration values for PHP are OPcache related and for many frameworks there are important configuration options that influence performance.

Starting with this release Tideways will observe PHP configuration and runtime metrics as well as known application configuration options that affect performance and make Observations about them.

You’ll find the observations module under “Issues” then “Observations” in the Tideways UI and it will show you all observations in either error, warning or pass state. 

For now the observations are related to OPcache, Realpath Cache, Timeouts and other core PHP metrics. A handful of Shopware 5 and 6 specific observations start our work on application specific observations for now. Each observation provides information about cause and remedy including a detailed documentation page with explanations. Here you an see an application that has the OPCache Interned strings setting configured too low:

Compare Callgraph Redesign

Last year we completely redesigned the callgraph screen to provide a unified UI with better navigation and more information on a single screen. When comparing two callgraphs with each other it now uses the same unified UI.

Start with visiting a trace with callgraph that you want to compare to another. The navigation contains a link to “Compare”. Select the trace to compare with the current trace and the following screen will show the “Callgraph” compare.

There is also the familiar callgraph view that now shows a diff of the two compared callgraphs:

Give Traces Names

To better aid the performance optimization process you can now give traces a name that describes them and helps you to organize them for reference and comparison.

Click on the “Edit” button next to the transaction name of a trace and enter a name or description of what the trace represents for you.

You can find a list of all the traces you named on the “Traces” “History” screen.

Retry failed data collection requests from Daemon

Starting from version 1.7 of the daemon package, failed network requests with monitoring and profiling payloads for the backend are now retried for a few times instead of dropped immediately. This prevents the occasional one minute drop of data that was happening before, because of network problems and will help with the rare cases where the backend suffers from a downtime.

The retry mechanism works with two failsaves: It only stores up to 50 MB of payloads in memory and retries to send them for a maximum of 5 times in intervals of 60 seconds.

Symfony Messenger and Shopware 6 Worker Integration

While Tideways already supports instrumenting worker queues written in PHP, they currently need custom instrumentation of the processing loop to start and stop individual traces for each processed job/task.

If you are using Symfony Messenger or Shopware 6 worker queues then you can now use our Composer package instead, that makes this instrumentation quick to setup and integrate in your application.

GitHub App to synchronize Users into Teams

Tideways already allowed you to synchronize users from GitHub teams into an organization using their OAuth authentication. But since their OAuth tokens are tied to single users and not to a GitHub organization, this required the user that set up the synchronization to stay a GitHub admin to keep the synchronization working.

We have now migrated to a GitHub app that provides the team synchronization features. You can install the GitHub app between your GitHub and Tideways organizations through the “Integrations” admin screen in Tideways.

Afterwards you can create new teams and link them with a GitHub team in your organization.

Documentation: Synchronize Github Teams

PHP 8 and JIT Support

While Tideways already supported PHP 8 since its release in December 2020, it did not yet work in conjunction with the JIT. We have now rectified this by using the new Zend Observer API which supports both Profiling and JIT to work in combination. As a side effect it should reduce the overhead of Tideways on PHP 8 even more than with the previous profiling hooks that we used.

New Features and Changes in Profiler PHP Extension

The Profiling PHP Extension got new instrumentation since the last release that will collect new or more detailed information in the Timeline and Callgraph Profilers:

  • Magento 1: Added automatic transaction detection for SOAP and REST API
  • Shopware 5: Detect HtmlMinCompressor::minify in Timeline Profiler as common source for bottleneck
  • Laravel: Added Blade template names as tags to nodes in the Callgraph
  • Zend Framework/Laminas: Added template names as tags to nodes in the Callgraph
  • Improved cURL Multi Instrumentation to work when curl_multi_remove_handle is not used.

Additional changes in the extension include:

  • New INI setting tideways.traces_max_seconds that defaults to 60 seconds. Traces running for longer than this threshold will stop collecting timeline data as viewing very long traces that take longer in most cases adds no new information that cannot already be seen in the first 60 seconds.
  • Runtime metrics of PHP about Opcache and others are exported to the daemon in intervals of 60 seconds. This can be disabled by setting tideways.features.stats=0
  • Better Process / SAPI Information about FPM is sent to daemon, so that Tideways can detect multiple PHP-FPM pools and correctly see runtime metrics for each of them.
  • All HTTP requests are always monitored to allow the new HTTP monitoring feature to observe 100% of all HTTP calls. You can disable this to only observe HTTP calls made in sampled traces by setting tideways.features.monitor_http=0

That is everything for now. If you want to see some of these new features in action you can view a recording of our webinar about all these features.