Collection diagnostics information in Load Testing is a challenging task. Using Dynatrace it is possible to collect in-depth code level details with minimum performance overhead. However, although the performance overhead is low, collecting every single detail results in a huge amount of collected data. For 24 hour load tests this can be up to tens of gigabytes. In stress test scenarios which target to bring an application to it’s limits collecting every single detail will even be impossible.
In this post I will introduce two possibilities how to reduce the amount of collected data while still getting all required diagnosis information. These techniques are called slicing techniques as the collect only a part of the data. Depending on which strategy is chosen, we differentiate two slicing techniques
Horizontal slicing means that only transactions of specific virtual users are tracked. Following this approach it is possible to track in depth details for all application components while restricting overhead and keeping the amount of collected data in manageable limits. Dynatrace supports horizontal slicing, by selectively tracing transactions based on whether the Dynatrace HTTP header is sent. Only transactions having this header set will be recorded.
Vertical slicing means that all transactions of the application are monitored, but only for a specific component. This approach allows to track details for each single execution. Dynatrace allows to enable details for specific components at runtime. Switching the component details at runtime allows to gather detailed performance metrics to be used in performance regression testing.