Performance Improvement since Bahmni 0.87

Major changes in Bahmni 0.87:

  • OpenMRS has been upgraded to major version 2.0
  • Java has upgraded to version 8

Performance monitoring has been done by running a set of gatling scenarios for a certain period of time, which mimics the realtime scenarios.
The gatling simulation includes scenarios for Clinical flow, Registration flow, Inpatient flow and Atomfeed calls.

The scenarios and configuration can be found here: https://github.com/Bahmni/experiment/tree/master/bahmni-gatling/src/test/scala/org/bahmni/gatling

Environment and Test Configurations:

RAM8GB
Swap space4GB
Database usedAnonymised Prod data
Services runOpenmrs
Test Duration1 hour
Load Configurationload configuration
Monitoring toolNewrelic APM tool

Observations:

Before Upgrade:

Average Response timeThroughput
119 ms1840 rpm


After Upgrade:

Average Response timeThroughput
43 ms4140 rpm

JVM and CPU has been found stable before and after the upgrade.

Since Java 8, Java's share in CPU time has also been reduced by approximately 10%.

There were number of performance improvements done in OpenMRS as well. One such improvement is enabling hibernate second level cache for entities like Person, Address, PersonName, GlobalProperty, Role, Privilege.