Skip to main content

In one of the customers test environment 35 technicians initialized their devices to analyze and evaluate system performance.

 

They saw several issues. The initialization itself would run for 30+ minutes and never complete, so, They were forced to hard reboot the mobile phones.

Additionally, after logging in, the techs has seen NULL NULL on their mobile phones after logging in.

The environment was very slow, and, the success rates of initializations were very poor.

All in all, it was a very poor experience and they need to understand how they can improve this experience.

 

While the investigations were being carried out, it has observed that, Memory utilization was under threshold but we've noticed higher amount of CPU %, Data in/out of the Application, Read/Write operations, number of connections/requests, thread count which clearly lead to the higher response time of the App service and as a result there were failed requests with HTTP errors during that time period.

 

From the database end the utilization was under threshold and DTU, CPU, workers % were okay, also there were no any Failed connections and Deadlocks in that specific issue time period.

In order to improve the performance experience we suggest only increasing the instance count which is now set to min-3 and max-4 by keeping the same pricing tier since the memory utilization is under threshold.

Can someone please let me know how many instances will be needed to optimize performance?

Always do one initialization to ‘prime’ the cache, then do multiple concurrent initializations.

Because of the way .Net handles memory allocation, ’scale-out’ by adding instances would be my approach, unless you have system RAM specified so low there isn’t 2GB available for heap.

I think the nut you’re trying to crack is the FSM cache, which I believe is separate on each instance.  Once that is built up, you should be able to initialize multitudes of mobile users concurrently.  This is easy with a single instance, but if I’m right that each instance maintains its cache separately, I don’t know a way to guarantee that all instances have a fully populated cache.  I know we’ve done some work with cross-instance synchronization, so you may only need to run that first initialization start to finish regardless of how many instances you have, and then proceed with the 1+Nth initializations concurrently.


Reply