BBahmni 한국어 매뉴얼검색
한국어 번역 완료
한국어English

BahmniLite Performance Baselining (AWS + Gatling)

This would be a living document to capture various baselining snapshots while :-

  • Troubleshooting and applying a patch
  • Changing Software or Network configurations
  • Adding new scenarios and changing load share

Source Code: https://github.com/Bahmni/performance-test

⭕️ Automation Technology Stack

⭕️ Current Snapshots

40 Concurrent Users - ConfigurationHardwarePerformance environment was running on AWS EKS Custer with single node

Node (EC2: t3-large)

  • RAM 8GB
  • 2 vCPU
  • 100GB Secondary storage
  • AWS LINUX x86_64

Database (AWS RDS service: db.t3.xlarge)

  • RAM 16GB,
  • 4 vCPU (2 core, 2.5 GHz Intel Scalable Processor)
  • 100GB Secondary storage
  • MySQL, max_connections = 1304

Software

OpenMRS Tomcat - Server

OpenMRS - Heap

  • Initial Heap: 1024 MB
  • Max Heap: 1536 MB

-Xms1024m -Xmx1536m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=1024m -XX:InitialCodeCacheSize=64m -XX:ReservedCodeCacheSize=96m -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=40 -XX:+UseParNewGC -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSCompactWhenClearAllSoftRefs -XX:CMSInitiatingOccupancyFraction=85 -XX:+CMSScavengeBeforeRemark -XX:+UseGCOverheadLimit -XX:+UseStringDeduplication

Openmrs Connection Pooling

📗 Current Results - 40 Concurrent Users

  • Network: 60 Mbps
  • Duration: 24 hours
  • Ramp Up: 5 mins
  • Database pre-state: 75000 patient records

Report Link: https://bahmni.github.io/performance-test/longduration_report-20230130141239257_40users_24hrs_all_omods_afterhipfix/index.html

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%57601524846481389
Existing Patient Search using ID → Start OPD Visit30%4320544726761977
Existing Patient Search using Name → Start OPD Visit20%43201193525071492
Upload Patient Document10%14401424825811135
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%57601364405645317291

70 Concurrent Users - ConfigurationHardwarePerformance environment was running on AWS EKS Custer with single node

Node (EC2: m5-xlarge)

  • RAM 16GB
  • 4 vCPU
  • 100GB Secondary storage
  • AWS LINUX x86_64

Database (AWS RDS service: db.t3.xlarge)

  • RAM 16GB,
  • 4 vCPU (2 core, 2.5 GHz Intel Scalable Processor)
  • 100GB Secondary storage
  • MySQL, max_connections = 1304

Software

OpenMRS Tomcat - Server

OpenMRS - Heap

  • Initial Heap: 1024 MB
  • Max Heap: 2536 MB

-Xms1024m -Xmx2536m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=1024m -XX:InitialCodeCacheSize=64m -XX:ReservedCodeCacheSize=96m -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=40 -XX:+UseParNewGC -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSCompactWhenClearAllSoftRefs -XX:CMSInitiatingOccupancyFraction=85 -XX:+CMSScavengeBeforeRemark -XX:+UseGCOverheadLimit -XX:+UseStringDeduplication

Openmrs Connection Pooling

📗 Current Results - 70 Concurrent Users

  • Network: 60 Mbps
  • Duration: 24 hours
  • Ramp Up: 5 mins
  • Database pre-state: 90500 patient records

Report Link: https://bahmni.github.io/performance-test/longduration_report-20230213133118638_70users_24hours_AfterHIPfix_m5xlarge/index.html

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%10080130252309674
Existing Patient Search using ID → Start OPD Visit30%7200493054642660
Existing Patient Search using Name → Start OPD Visit20%7200135278348573
Upload Patient Document10%2160111206253459
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%10080998233126084134

🔰 Observations:

  • Doctor Consultation - The maximum response times for this particular activity was pretty high under both 40 and 70 concurrent tests. The services responsible for this activity is under analysis and will be prioritised for performance improvement.

Note: The tests performed here are of most demand to users using Bahmni lite compared to the real world clinic activities. So it is assumed safe to implement for the suggested concurrent users under a cluster even when the maximum time response numbers for some activities are not optimal at the moment under test.

⭕️ Base Configuration

The below details are historical data observed during each tests with different configurations at the start of performance analysis for Bahmni lite. Kindly view them for data purposes and not as references.

DetailsHardwarePerformance environment was running on AWS EKS Custer with single node

Node (EC2: m5-xlarge)

  • RAM 16GB
  • 4 vCPU
  • 100GB Secondary storage
  • AWS LINUX x86_64

Database (AWS RDS service: db.t3.xlarge)

  • RAM 16GB,
  • 4 vCPU (2 core, 2.5 GHz Intel Scalable Processor)
  • 100GB Secondary storage
  • MySQL, max_connections = 1304

Software

OpenMRS Tomcat - Server

OpenMRS - Heap

  • Initial Heap: 256 MB
  • Max Heap: 768 MB

-Xms256m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m

Openmrs Connection Pooling

📙 10 Concurrent UsersDetailsnoteNetwork: 30 MBPS

Duration: 30 mins

Ramp Up: 3 mins

Database pre-state: 2104 Active Patients with 9288 Observations

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220911073147512_10users_30mins_768mb/index.html

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%1741001077
Existing Patient Search using ID → Start OPD Visit30%1062431550
Existing Patient Search using Name → Start OPD Visit20%1072431437
Upload Patient Document10%272282169
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%1871852092

📙 25 Concurrent Users

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220912043950582_25users_15mins_2gb/index.html

🔰 Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%861611193
Existing Patient Search using ID → Start OPD Visit30%743201113
Existing Patient Search using Name → Start OPD Visit20%643101144
Upload Patient Document10%21213843
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%107259846

📙 40 Concurrent Users - Standard Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220912053731908_40users_15mins_2gb/index.html

🔰 Observations:

  • OpenMRS Pod was consuming 4.15GB Memory and 2.59 CPU
  • Overall Cluster was at 5.2GB RAM and 2.9 CPU

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%1301621523
Existing Patient Search using ID → Start OPD Visit30%1093562921
Existing Patient Search using Name → Start OPD Visit20%1243374125
Upload Patient Document10%36238579
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%1422521289

📙 70 Concurrent Users - High Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220912071131867_70users_30mins_2gb/index.html

🔰 Observations:

  • OpenMRS Cluster Memory and CPU consumption was similar to 90 concurrent user run (Peak traffic)
  • The API failure rates were very similar to peak traffic

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)Max Time (ms)Notes
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%25119852939
Existing Patient Search using ID → Start OPD Visit30%175120054692
Existing Patient Search using Name → Start OPD Visit20%16297954510
Upload Patient Document10%624097848
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%19355844887Get Patient Lab Orders: 95% KOSave Consultation: 52% KOGet Visits: 18% KO

📙 90 Concurrent Users - Peak Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220912061644613_90users_30mins_8gb/index.html

🔰 Observations:

  • OpenMRS Pod was consuming 11.5GB Memory and 3.22 CPU
  • Overall Cluster was at 12.5GB RAM and 3.6 CPU
  • More than 50% of the consultation and 95% all of Patient lab order fetch api calls suffered timeout.

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)Max Time (ms)Notes
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%25418855802
Existing Patient Search using ID → Start OPD Visit30%192103156250
Existing Patient Search using Name → Start OPD Visit20%17765153063
Upload Patient Document10%6254559070
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%20062653271Get Patient Lab Orders : 95% KOSave Consultation: with 56% KOGet Visits: 15% KO

⭕️ Pace Based Framework

The framework is based on iterations per time type volumes i.e. a dedicated pace is set for each persona simulation.

Default JVM Configuration

📙 40 Concurrent Users - Standard Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220923121606971_40users_30mins_defaultJVM/index.html

🔰 Observations:

  • OpenMRS Pod was consuming GB Memory and CPU
  • Overall Cluster was at GB RAM and CPU

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%10888191328378
Existing Patient Search using ID → Start OPD Visit30%96243481557571
Existing Patient Search using Name → Start OPD Visit20%87243579694749
Upload Patient Document10%27164209280304
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%1203325316101153

📙 70 Concurrent Users - High Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220923133122220_70users_30mins_defaultJVM/index.html

🔰 Observations:

  • OpenMRS Pod was consuming GB Memory and CPU
  • Overall Cluster was at GB RAM and CPU

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%2028596810581120
Existing Patient Search using ID → Start OPD Visit30%163232125417001860
Existing Patient Search using Name → Start OPD Visit20%143241122116301866
Upload Patient Document10%4014498412811338
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%210329173625382654

📙 90 Concurrent Users - Peak Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220923141108441_90users_30mins_defaultJVM/index.html

🔰 Observations:

  • OpenMRS Pod was consuming GB Memory and CPU
  • Overall Cluster was at GB RAM and CPU

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%2748199510641843
Existing Patient Search using ID → Start OPD Visit30%192250182021932410
Existing Patient Search using Name → Start OPD Visit20%188239210922232465
Upload Patient Document10%5716797213661416
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%270339265637524149

Tuned JVM Configuration

The JVM was tuned for better efficiency from the default configuration

Configuration

📙 40 Concurrent Users - Standard Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220927073846406_40users_30mins_tunedJVM/index.html

🔰 Observations:

  • OpenMRS Pod was consuming 2.75 GB Memory and 0.411 CP

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%119154294361544
Existing Patient Search using ID → Start OPD Visit30%75242408453463
Existing Patient Search using Name → Start OPD Visit20%96270612765766
Upload Patient Document10%35138348474504
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%120490687769778

📙 70 Concurrent Users - High Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220927100508288_70users_30mins_tunedJVM/index.html

🔰 Observations:

  • OpenMRS Pod was consuming 2.77 GB Memory and 1.22 CPU

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%206164366537677
Existing Patient Search using ID → Start OPD Visit30%146249661806894
Existing Patient Search using Name → Start OPD Visit20%157238654743767
Upload Patient Document10%60132600710710
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%21049797810751236

📙 90 Concurrent Users - Peak Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20220927092902911_90users_30mins_tunedJVM/index.html

🔰 Observations:

  • OpenMRS Pod was consuming 2.76 GB Memory and 1.42 CPU

Report Observations:

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%260153362423526
Existing Patient Search using ID → Start OPD Visit30%1992687869601163
Existing Patient Search using Name → Start OPD Visit20%1972768449521120
Upload Patient Document10%62152537741860
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%270511103713211551

⭕️ Scenario based pace frameworkThe scenario based pace framework enables various pace distribution among different scenarios individually.

Configuration

📙 40 Concurrent Users - Standard Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20221012061917030_standard_30mins_tunedJVM_v2/index.html

📙 70 Concurrent Users - High Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20221012065541720_high_30mins_tunedJVM_v2/index.html

📙 90 Concurrent Users - Peak Traffic condition

Report Link: https://bahmni.github.io/performance-test/baseline_report-20221012095812872_peak_30mins_tunedJVM_v2/index.html

원문 정보

Bahmni Wiki · CC BY-SA 4.0

원문 보기 ↗