Since our August performance issues, all available resources and personnel have been at work to ensure that we can maintain a high performance leading up to the next Danish VAT deadline on December 1 when we will again see more users working in the application and thus an increased load on the system.
This is what we have accomplished so far:
No more session state locks. Session state locking was the main issue affecting performance during August. We have now removed the need for locking, meaning that we no longer see blocking caused by session state. General response times have also improved.
As part of this, we have also moved all our session state data from a normal SQL Server database to a faster In-Memory database that doesn’t cause blocking chains. This is the culmination of work that was started before summer, and it’s a great pleasure to finally see it come to life.
API optimizations. We have made a lot of performance enhancements to various parts of the API. Additionally, we have been busy working with our integration partners to get them to use our API more efficiently. This has caused close to a 25% reduction in traffic!
PDF conversion moved to background processing (fully implemented early next week). When users send scanning emails to e-conomic, we now process them as we receive them and convert the attached documents to PDFs straight away.
This not only helps users, who no longer have to wait while the emails are processed, but also removes some of the heavy scanning load during busy periods such as the VAT season.
Operating system upgraded. The operating system on all our web servers has been upgraded to the latest version, Windows 2012R2.
New server zone for static content. We have in some scenarios seen long loading times for static content such as stylesheets, image files, etc. To alleviate this, we have created a new server zone for serving static content, which helps improve general performance in these scenarios.
Code optimizations. Besides the general performance enhancements above, we have also implemented code changes to improve the performance of specific parts of the application, with the most notable results below:
- Faster loading of reports, especially the Ledger cards report. 97% of the Ledger cards reports are now loaded in less than 1 second (up from 83%), and most load much faster.
- Saving large Quick day books has gone from 4 seconds to 0.4 seconds on average.
- The left-side menu is now displayed in half the time it took before.
- General optimizations that result in small improvements across all pages
More to come
As stated before, we will continue to stay highly focused on performance and stability in both the short term and the long term.
In the short term, we still have a couple of ongoing projects, mainly ensuring independence from external services and improving our handling of spinners. With spinners, we’ve seen some progress as we now have 70% fewer spinners showing for more than 15 seconds, but some of the issues causing spinners are still to be solved.
Long-term, we plan to move to a different type of infrastructure that will allow for increased resilience, and we want to make changes to our architecture so that we can make different functionality and customers more independent from each other in terms of performance.