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

Bahmni Lite Performance Long Duration Simulation Baselining

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

Base Configuration

Hardware

Performance 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

Client Configuration

The performance test simulation(Gatling) will be executed in the client machine.

Client (EC2: c5-xlarge)

  • RAM 8GB
  • 4 vCPU
  • 8GB storage
  • AWS LINUX x86_64

📗 40 Concurrent Users - 8 Hours

  • Network: 60 MBPS
  • Ramp Up: 5 mins
  • Database pre-state: 543 Patients

OpenMRS JVM Configuration:

Report Link: https://bahmni.github.io/performance-test/longduration_report-20221124061027477_40users_8hrs/index.html

Report Observations:

Needs to be ANALYSEDRed

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%1920131215282533
Existing Patient Search using ID → Start OPD Visit30%14403291167245
Existing Patient Search using Name → Start OPD Visit20%1440275076176
Upload Patient Document10%48088152202327
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%1920562106511911592

📗 50 Concurrent Users - 8 HoursnoteNetwork: 60 MBPS

Ramp Up: 5 mins

Database pre-state: 2464 Patients

OpenMRS JVM Configuration:

Report Link: https://bahmni.github.io/performance-test/longduration_report-20221125061309057_50users_8hrs/index.html

Report Observations:

Needs to be monitoredYellow

Needs to be ANALYSEDRed

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%2440130226295478
Existing Patient Search using ID → Start OPD Visit30%168032851732272
Existing Patient Search using Name → Start OPD Visit20%16802977131277
Upload Patient Document10%48089143166263
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%2400572119913381716

📕 70 Concurrent Users - 8 Hours70usersnoteNetwork: 60 MBPS

Ramp Up: 5 mins

Database pre-state: 8361 Patients

OpenMRS JVM Configuration:

Report Link: https://bahmni.github.io/performance-test/longduration_report-20221117114025035_70users_8hrs/index.html

Report Observations:

🟣 Tests after HIU(ABDM) Fix

📗 40 Concurrent Users - 24 Hours

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

Report

  • 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:

Needs to be ANALYSEDRed

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 - 24 Hours

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

Report

  • 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:

Needs to be ANALYSEDRed

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.

🟣 Tests with G1GC JVM settings

📗 100 Concurrent Users - 24 Hours

100 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 - G1GC Heap

  • Initial Heap: 1024 MB
  • Max Heap: 4096 MB

-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx4096m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=25 -XX:G1MaxNewSizePercent=50 -XX:SurvivorRatio=8 -XX:MaxMetaspaceSize=512m -XX:ReservedCodeCacheSize=256m -XX:CompressedClassSpaceSize=256m -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java.hprof -Xloggc:/usr/local/tomcat/logs/gc.log -XX:+UseStringDeduplication -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

Report

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

Report Link: https://bahmni.github.io/performance-test/longduration_report-20230330120855322_100users_24_hrs_g1gc/index.html

Report Observations:

Needs to be ANALYSEDRed

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%14400672603731176
Existing Patient Search using ID → Start OPD Visit30%1080026198309812
Existing Patient Search using Name → Start OPD Visit20%108002335316771612
Upload Patient Document10%3600501923181203
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%14400406112215001500

🔰 Observations:

  • Removing the hip and crater atom feed pods and introducing the G1GC memory management has reduced the overall response time and also the CPU utilization .

🟣 Tests with G1GC JVM settings after HIP Atomfeed fix

📗 100 Concurrent Users - 24 Hours

100 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 - G1GC Heap

  • Initial Heap: 1024 MB
  • Max Heap: 4096 MB

-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx4096m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=25 -XX:G1MaxNewSizePercent=50 -XX:SurvivorRatio=8 -XX:MaxMetaspaceSize=512m -XX:ReservedCodeCacheSize=256m -XX:CompressedClassSpaceSize=256m -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java.hprof -Xloggc:/usr/local/tomcat/logs/gc.log -XX:+UseStringDeduplication -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

Report

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

Report Link: https://bahmni.github.io/performance-test/longduration_report-20230425092521626_100users_24hours_after-hip-atomfeed-fix/index.html

Report Observations:

Needs to be ANALYSEDRed

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%144001212563641156
Existing Patient Search using ID → Start OPD Visit30%1080067170276846
Existing Patient Search using Name → Start OPD Visit20%108002876288211734
Upload Patient Document10%360088224353686
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%14400590149718622855

📗 120 Concurrent Users - 24 Hours120 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 - G1GC Heap

  • Initial Heap: 1024 MB
  • Max Heap: 4096 MB

-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx4096m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=25 -XX:G1MaxNewSizePercent=50 -XX:SurvivorRatio=8 -XX:MaxMetaspaceSize=512m -XX:ReservedCodeCacheSize=256m -XX:CompressedClassSpaceSize=256m -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java.hprof -Xloggc:/usr/local/tomcat/logs/gc.log -XX:+UseStringDeduplication -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

Report

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

Report Link: https://bahmni.github.io/performance-test/longduration_report_20230427094905338_120users_24hours_after-hip-atomfeed-fix/index.html

Report Observations:

Needs to be ANALYSEDRed

SimulationsScenarioLoad sharePatient CountMin Time (ms)95th Percentile (ms)99th Percentile (ms)Max Time (ms)
Frontdesk50% TrafficNew Patient Registration → Start OPD Visit40%1728062195304752
Existing Patient Search using ID → Start OPD Visit30%1296023170283918
Existing Patient Search using Name → Start OPD Visit20%129602876307851306
Upload Patient Document10%432046163264595
Doctor50% TrafficDoctor Consultation8 Observations2 Lab Orders3 Medication100%17280414125915923029

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.

원문 정보

Bahmni Wiki · CC BY-SA 4.0

원문 보기 ↗