2009 Implementers Group Meeting Program Performance Issues
Venue: Breakaway 2
Initial Thoughts
Creating a 2-million patient test data set to stress test OpenMRS
Having an OpenMRS release focused solely on performance improvement
How many data clerks & managers can access the system at once
Using replication to offload reporting from the "operational" system
Optimizing Tomcat configuration
Look at notes from How to Start an Implementation
Goals
How well is OpenMRS currently performing?
What are hardware requirements?
For people using low-power systems, how far can they go?
How much bandwidth is needed to do data entry via the internet?
Can OpenMRS have a chance at scaling?
How do you optimize MySQL configuration?
How is OpenMRS' performance affected by different databases (e.g., SQL Server 2008)?
What global properties exist for performance tuning?
Notes
Current performance
With large implementations, it can take 15 seconds or more to find a patient and 30-60 seconds to load the patient dashboard
Pentium 4 w/ 256 MB was slow managing 700,00 patients
What are hardware requirements?
Most systems are using at least 4 GB of RAM, some on a server and others on a desktop
Performance Testing
Saptarshi blogged about this
Glassfish may be more scalable than Tomcat
What Settings (formerly Global Properties from 1.9 downwards) exist for performance tuning?
patient.identifierPrefix - change from % to blank (empty)
patient.identifierRegex - change from % to blank (empty)
patient.identifierSuffix - change from % to blank (empty)
patient.searchMaxResults - set to maximum matches you think a person would be willing to search through (e.g., 100 or 1000)
Are we over-AJAXed?
Do we*really need interactive search?
Could we make the search delay duration a global property? And make AJAX real-time patient search optional via Setting (formerly Global Property from 1.9 downwards)?
How many users of the system
AMPATH has ~25 data entry users working concurrently
Even 6 active users can be slowed if the same system is being used for reporting (cohort builder or data exports)
Avoiding power outage issues
ExtraDB is an alternative to InnoDB that handles crashes better and performs better
TODO
Make a ticket for Fix the patient search widget faster
Make AJAX real-time search optional & delay time settable via Settings (formerly Global Properties from 1.9 downwards)
Avoid downloading all patients
Fix the patient dashboard
Lazy loading of data