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