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: GitHub - Bahmni/performance-test
⭕️ Automation Technology Stack
⭕️ Current Snapshots
📗 Current Results - 40 Concurrent Users
Network: 60 Mbps
Duration: 24 hours
Ramp Up: 5 mins
Database pre-state: 75000 patient records
Report Link: Gatling Stats - Global Information
Report Observations:
Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
---|---|---|---|---|---|---|---|
Frontdesk 50% Traffic | New Patient Registration → Start OPD Visit | 40% | 5760 | 152 | 484 | 648 | 1389 |
Existing Patient Search using ID → Start OPD Visit | 30% | 4320 | 54 | 472 | 676 | 1977 | |
Existing Patient Search using Name → Start OPD Visit | 20% | 4320 | 119 | 352 | 507 | 1492 | |
Upload Patient Document | 10% | 1440 | 142 | 482 | 581 | 1135 | |
Doctor 50% Traffic | Doctor Consultation
| 100% | 5760 | 1364 | 4056 | 4531 | 7291 |
📗 Current Results - 70 Concurrent Users
Report Link: Gatling Stats - Global Information
Report Observations:
Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
---|---|---|---|---|---|---|---|
Frontdesk 50% Traffic | New Patient Registration → Start OPD Visit | 40% | 10080 | 130 | 252 | 309 | 674 |
Existing Patient Search using ID → Start OPD Visit | 30% | 7200 | 49 | 305 | 464 | 2660 | |
Existing Patient Search using Name → Start OPD Visit | 20% | 7200 | 135 | 278 | 348 | 573 | |
Upload Patient Document | 10% | 2160 | 111 | 206 | 253 | 459 | |
Doctor 50% Traffic | Doctor Consultation
| 100% | 10080 | 998 | 2331 | 2608 | 4134 |
🔰 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.
📙 10 Concurrent Users
📙 25 Concurrent Users
📙 40 Concurrent Users - Standard Traffic condition
📙 70 Concurrent Users - High Traffic condition
📙 90 Concurrent Users - Peak Traffic condition
⭕️ 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
📙 70 Concurrent Users - High Traffic condition
📙 90 Concurrent Users - Peak Traffic condition
Tuned JVM Configuration
The JVM was tuned for better efficiency from the default configuration
Configuration
📙 40 Concurrent Users - Standard Traffic condition
📙 70 Concurrent Users - High Traffic condition
📙 90 Concurrent Users - Peak Traffic condition
⭕️ Scenario based pace framework
The scenario based pace framework enables various pace distribution among different scenarios individually.
Configuration
📙 40 Concurrent Users - Standard Traffic condition
📙 70 Concurrent Users - High Traffic condition
📙 90 Concurrent Users - Peak Traffic condition
The Bahmni documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)