With Loupe 5 taking longer to complete than we had hoped, we’ve pulled back some performance and scalability improvements to create Loupe 4.8, along with some customer feature requests. All and all, it’s a good capstone on the 4.8 line and is available for download.
Loupe Desktop and Loupe Server have been enhanced to recognize data files from our new Java Agent and customize their display for them. For example, Java uses jars not assemblies and handles version numbers differently. While it’s possible to open the Java data files in Loupe 4.0 and later, version 4.8 displays the best results. If you have any Java applications, it’s worth catching up on all the details on our new Loupe Agent for Java from our past blog articles:
Viewing Events by Environment
Loupe Resolve is designed for managing long term software quality so it emphasizes tracking any event or error based on the application version it happens in. It isn’t designed for tracking operational problems where you are more concerned about where something happened than what version it happened in.
But, one of our long-term customers came to us with an urgent need to be able to view events and errors by customer they support. Each customer is designated with its own environment name so what they needed was a way they could quickly filter the various event views by environment.
We also had to do some performance work because this particular Loupe customer’s been quite successful - so they have a lot of customers for their application, many more than we’d tested the Environments list to previously. We improved the caching, parallel loading, and binding times for large numbers of environments and promotion levels.
Bandwidth Savings with Many Live Sessions
Another customer came to us with a problem - during normal operations they have over 15 thousand instances of their applications reporting real time status with Live Sessions. This is all fine, but when Loupe Desktop is running it’s receiving a feed of the status updates for all of those sessions: about 3KB every 15 seconds by 15,000 sessions - nearly 30Mbps. The total bandwidth of that got the attention of their networking team and in turn they asked us to come up with a solution.
For Loupe 4.8, we’ve extended the Live Sessions protocol with a pause and resume feature so it only receives real-time session updates when the Loupe Desktop user is looking at the list of live sessions instead of the entire time Loupe Desktop is running. This doesn’t change the total bandwidth consumed, but limits it to the times it’s absolutely useful. Since most users don’t leave the list of live sessions up on screen all the time this dramatically reduces the bandwidth consumed over time. Whenever a user clicks off the view transfer is paused and then resumed when the user displays the view again. The connection to the Loupe Server is maintained throughout to ensure the view can be refreshed quickly.
To take advantage of this bandwidth saving feature, both Loupe Desktop and Server need to be at least version 4.8. Otherwise, the feature won’t be enabled. No change to the Loupe Agent is required and the same broad compatibility remains between the various components of Loupe.
Other Scalability Improvements
Large Numbers of Environments, Promotion Levels and Applications
We optimized several views to address customer performance issue. For example, we have one customer that has several thousand distinct applications they are tracking with Loupe. That’s well higher than our design goals and presented performance problems on the top dashboards which were executing a query-per-application to aggregate stats. We had other customers with similar numbers of environments or promotion levels causing performance issues in other parts of the application.
Thanks to the telemetry we get on response time and database activity from our CEIP customers and our SaaS platform we were able to hunt down a number of corner cases and make appropriate changes to bring them back in line.
Loupe Desktop Synchronization
We improved the performance of Loupe Desktop’s synchronization process with the Server by duplicating some tracking data and and indexing data differently on the server. This can dramatically reduce SQL Server load and reduce delay in sessions being available in Loupe Desktop for customers with a large number of total sessions ever registered with the Server. This is particularly beneficial when there are a large number of Desktop client’s connected at the same time.