While desktop users are accustomed to waiting for large reports and dashboards to load, mobile users expect nearly-instant results. Getting those results can be a challenge, and since MicroStrategy doesn’t offer many tips to increase or improve mobile performance, I’ll share a few nuggets I’ve learned from my experience optimizing MicroStrategy Mobile.
Reducing Query Execution Time and Dataset Size Using Data Marts and Freeform SQL Reports
When we first created our mobile reports and dashboards, they would timeout due to long-running queries and enormous datasets. Increasing the max allowable dataset size was an unreliable and temporary solution to a permanent problem. Ultimately we needed to reduce the size of the dataset, as well as the query execution time.
Fortunately, we were able to accomplish both. Here’s how:
We first created a filtered Data Mart report containing all of our desired attributes and metrics for the max required time period. The report acts as an ETL process that populates a smaller permanent table on a defined schedule.
We then created a Freeform SQL report which queries the Data-Mart-populated table, rather than the larger underlying dataset. Queries against this table completed much faster thanks to its smaller size and decreased contention.
The Freeform SQL report then became the source of our data in our mobile dashboards and reports.
These smaller results loaded almost immediately and allowed our users to view the latest data on their MicroStrategy Mobile app in seconds, even without Wi-Fi.
Except when it wouldn’t.
Our users began experiencing intermittent slowness and timeouts using the MicroStrategy Mobile app, regardless if they were on Wi-Fi or cellular. Network packet analysis showed a 15-second gap of idle time with no communication between any servers after opening a report from the MicroStrategy Mobile app. Further analysis revealed that the first run was exceptionally slow, while subsequent loads were relatively faster.
A few google searches later, we discovered this was a common problem for websites running under IIS.
Tweaking IIS Application Pool Settings for Constant and Immediate Availability
You wouldn’t intuitively think MicroStrategy’s mobile apps rely so heavily on a Microsoft product, but they do. MicroStrategy Mobile uses IIS to deliver data to its apps, and if IIS isn’t configured properly, your MicroStrategy Mobile app will be slow.
By default, IIS:
- Only starts the website when a user request is made
- Shuts the website down after a certain amount of time of inactivity (20 minutes by default)
- Recycles the website on an irregular interval (1740 minutes, or 29 hours, by default)
This causes your website or app to appear seemingly inaccessible for the first user, as well as any other user after the inactivity threshold is reached.
Tweaking these IIS Application Pool settings on our MicroStrategy Mobile server made our mobile reports and dashboards fast and immediately accessible at all times:
- (General) > Start Mode: AlwaysRunning
- This forces IIS to start your website immediately and ensures it’s always running
- Process Model > Idle Time-Out: 0
- This forces IIS to never shut down your website due to inactivity
I also opted to reboot the website at a specific time each day, rather than relying on the default irregular recycle interval:
- Recycling > Regular Time Interval: 0
- Recycling > Specific Times: (Your preference)
By implementing all of these changes, we were able to achieve a 95%+ performance improvement for MicroStrategy Mobile, and more importantly: exceed our mobile users’ expectations.
Like, share, or comment if you found some value in this article!