AWS 및 Gatling 기반 Bahmni Lite 성능 기준선
다음 상황에서 여러 기준선 스냅샷을 기록하고 지속적으로 갱신하는 문서입니다.
- Troubleshooting and applying a patchChanging Software or 네트워크 configurationsAdding new scenarios and changing load share
⭕️ 자동화 기술 스택
- Gatling, Scala
⭕️ 현재 스냅샷
40 동시 사용자 - 구성하드웨어Performance environment was running on AWS EKS Custer with single node
노드(EC2: t3-large)
- RAM 8GB2 vCPU 100GB 보조 스토리지AWS LINUX x86_64
데이터베이스(AWS RDS: db.t3.xlarge)
- RAM 16GB, 4 vCPU (2 core, 2.5 GHz Intel Scalable Processor)100GB 보조 스토리지MySQL, max_connections = 1304
소프트웨어
OpenMRS Tomcat - 서버
OpenMRS - 힙
- 초기 힙: 1024 MB최대 힙: 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 연결 풀링
📗 현재 결과 - 동시 사용자 40명
- 네트워크: 60 Mbps기간: 24 hours부하 증가 시간: 5 분데이터베이스 사전 상태: 75000 환자 레코드
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% 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 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 5760 | 1364 | 4056 | 4531 | 7291 |
70 동시 사용자 - 구성하드웨어Performance environment was running on AWS EKS Custer with single node
노드(EC2: m5-xlarge)
- RAM 16GB4 vCPU 100GB 보조 스토리지AWS LINUX x86_64
데이터베이스(AWS RDS: db.t3.xlarge)
- RAM 16GB, 4 vCPU (2 core, 2.5 GHz Intel Scalable Processor)100GB 보조 스토리지MySQL, max_connections = 1304
소프트웨어
OpenMRS Tomcat - 서버
OpenMRS - 힙
- 초기 힙: 1024 MB최대 힙: 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 연결 풀링
📗 현재 결과 - 동시 사용자 70명
- 네트워크: 60 Mbps기간: 24 hours부하 증가 시간: 5 분데이터베이스 사전 상태: 90500 환자 레코드
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% 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 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 10080 | 998 | 2331 | 2608 | 4134 |
🔰 관찰 결과:
- 의사 진료: 동시 사용자 40명 및 70명 테스트 모두에서 이 작업의 최대 응답 시간이 상당히 높았습니다. 관련 서비스를 분석 중이며 성능 개선 우선순위에 포함할 예정입니다.
참고: 이 테스트는 실제 임상 활동과 비교할 때 Bahmni Lite 사용자에게 가장 높은 부하가 걸리는 상황을 가정했습니다. 따라서 일부 작업의 최대 응답 시간이 아직 최적이 아니더라도 클러스터에서는 제안된 동시 사용자 수로 안전하게 구현할 수 있다고 판단합니다.
⭕️ 기본 구성
아래 상세 정보는 Bahmni Lite 성능 분석을 시작할 때 서로 다른 구성으로 수행한 각 테스트에서 관찰한 과거 데이터입니다. 참조 기준이 아니라 데이터 확인 용도로만 사용하십시오.
Details하드웨어Performance environment was running on AWS EKS Custer with single node
노드(EC2: m5-xlarge)
- RAM 16GB4 vCPU 100GB 보조 스토리지AWS LINUX x86_64
데이터베이스(AWS RDS: db.t3.xlarge)
- RAM 16GB, 4 vCPU (2 core, 2.5 GHz Intel Scalable Processor)100GB 보조 스토리지MySQL, max_connections = 1304
소프트웨어
OpenMRS Tomcat - 서버
OpenMRS - 힙
- 초기 힙: 256 MB최대 힙: 768 MB
-Xms256m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m
OpenMRS 연결 풀링
📙 10 동시 사용자Detailsnote네트워크: 30 MBPS
기간: 30분
부하 증가 시간: 3분
데이터베이스 사전 상태: 2104 활성 환자 with 9288 관찰값
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220911073147512_10users_30분_768mb/index.html
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | Max Time (ms) |
|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 174 | 100 | 1077 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 106 | 243 | 1550 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 107 | 243 | 1437 | |
| Upload Patient Document | 10% | 27 | 228 | 2169 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 187 | 185 | 2092 |
📙 동시 사용자 25명
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220912043950582_25users_15분_2gb/index.html
🔰 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | Max Time (ms) |
|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 86 | 161 | 1193 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 74 | 320 | 1113 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 64 | 310 | 1144 | |
| Upload Patient Document | 10% | 21 | 213 | 843 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 107 | 259 | 846 |
📙 동시 사용자 40명 - 표준 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220912053731908_40users_15분_2gb/index.html
🔰 관찰 결과:
- OpenMRS Pod 사용량: 4.15GB 메모리 및 2.59 CPUOverall Cluster was at 5.2GB RAM and 2.9 CPU
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | Max Time (ms) |
|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 130 | 162 | 1523 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 109 | 356 | 2921 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 124 | 337 | 4125 | |
| Upload Patient Document | 10% | 36 | 238 | 579 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 142 | 252 | 1289 |
📙 동시 사용자 70명 - 높은 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220912071131867_70users_30분_2gb/index.html
🔰 관찰 결과:
- OpenMRS Cluster 메모리 및 CPU consumption was similar to 90 concurrent user run (Peak traffic)The API failure rates were very similar to peak traffic
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | Max Time (ms) | Notes |
|---|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 251 | 198 | 52939 | |
| Existing Patient Search using ID → Start OPD Visit | 30% | 175 | 1200 | 54692 | ||
| Existing Patient Search using Name → Start OPD Visit | 20% | 162 | 979 | 54510 | ||
| Upload Patient Document | 10% | 62 | 409 | 7848 | ||
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 193 | 558 | 44887 | Get Patient Lab Orders: 95% KOSave Consultation: 52% KOGet Visits: 18% KO |
📙 동시 사용자 90명 - 최대 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220912061644613_90users_30분_8gb/index.html
🔰 관찰 결과:
- OpenMRS Pod 사용량: 11.5GB 메모리 및 3.22 CPUOverall Cluster was at 12.5GB RAM and 3.6 CPUMore than 50% of the consultation and 95% all of Patient lab order fetch api calls suffered timeout.
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | Max Time (ms) | Notes |
|---|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 254 | 188 | 55802 | |
| Existing Patient Search using ID → Start OPD Visit | 30% | 192 | 1031 | 56250 | ||
| Existing Patient Search using Name → Start OPD Visit | 20% | 177 | 651 | 53063 | ||
| Upload Patient Document | 10% | 62 | 545 | 59070 | ||
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 200 | 626 | 53271 | Get Patient Lab Orders : 95% KOSave Consultation: with 56% KOGet Visits: 15% KO |
⭕️ 속도 기반 프레임워크
이 프레임워크는 시간당 반복 횟수 방식의 볼륨을 기반으로 하며 각 persona 시뮬레이션에 전용 속도를 설정합니다.
기본 JVM 구성
📙 동시 사용자 40명 - 표준 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220923121606971_40users_30분_defaultJVM/index.html
🔰 관찰 결과:
- OpenMRS Pod 사용량: GB 메모리 및 CPUOverall Cluster was at GB RAM and CPU
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 108 | 88 | 191 | 328 | 378 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 96 | 243 | 481 | 557 | 571 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 87 | 243 | 579 | 694 | 749 | |
| Upload Patient Document | 10% | 27 | 164 | 209 | 280 | 304 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 120 | 332 | 531 | 610 | 1153 |
📙 동시 사용자 70명 - 높은 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220923133122220_70users_30분_defaultJVM/index.html
🔰 관찰 결과:
- OpenMRS Pod 사용량: GB 메모리 및 CPUOverall Cluster was at GB RAM and CPU
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 202 | 85 | 968 | 1058 | 1120 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 163 | 232 | 1254 | 1700 | 1860 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 143 | 241 | 1221 | 1630 | 1866 | |
| Upload Patient Document | 10% | 40 | 144 | 984 | 1281 | 1338 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 210 | 329 | 1736 | 2538 | 2654 |
📙 동시 사용자 90명 - 최대 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220923141108441_90users_30분_defaultJVM/index.html
🔰 관찰 결과:
- OpenMRS Pod 사용량: GB 메모리 및 CPUOverall Cluster was at GB RAM and CPU
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 274 | 81 | 995 | 1064 | 1843 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 192 | 250 | 1820 | 2193 | 2410 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 188 | 239 | 2109 | 2223 | 2465 | |
| Upload Patient Document | 10% | 57 | 167 | 972 | 1366 | 1416 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 270 | 339 | 2656 | 3752 | 4149 |
튜닝된 JVM 구성
기본 구성보다 효율을 높이도록 JVM을 튜닝했습니다.
구성
📙 동시 사용자 40명 - 표준 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220927073846406_40users_30분_tunedJVM/index.html
🔰 관찰 결과:
- OpenMRS Pod 사용량: 2.75 GB 메모리 및 0.411 CP
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 119 | 154 | 294 | 361 | 544 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 75 | 242 | 408 | 453 | 463 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 96 | 270 | 612 | 765 | 766 | |
| Upload Patient Document | 10% | 35 | 138 | 348 | 474 | 504 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 120 | 490 | 687 | 769 | 778 |
📙 동시 사용자 70명 - 높은 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220927100508288_70users_30분_tunedJVM/index.html
🔰 관찰 결과:
- OpenMRS Pod 사용량: 2.77 GB 메모리 및 1.22 CPU
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 206 | 164 | 366 | 537 | 677 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 146 | 249 | 661 | 806 | 894 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 157 | 238 | 654 | 743 | 767 | |
| Upload Patient Document | 10% | 60 | 132 | 600 | 710 | 710 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 210 | 497 | 978 | 1075 | 1236 |
📙 동시 사용자 90명 - 최대 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20220927092902911_90users_30분_tunedJVM/index.html
🔰 관찰 결과:
- OpenMRS Pod 사용량: 2.76 GB 메모리 및 1.42 CPU
보고서 관찰 결과:
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic | New Patient Registration → Start OPD Visit | 40% | 260 | 153 | 362 | 423 | 526 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 199 | 268 | 786 | 960 | 1163 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 197 | 276 | 844 | 952 | 1120 | |
| Upload Patient Document | 10% | 62 | 152 | 537 | 741 | 860 | |
| Doctor50% Traffic | Doctor Consultation8 Observations2 Lab Orders3 Medication | 100% | 270 | 511 | 1037 | 1321 | 1551 |
⭕️ 시나리오 based pace frameworkThe scenario based pace framework enables various pace distribution among different scenarios individually.
구성
📙 동시 사용자 40명 - 표준 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20221012061917030_standard_30분_tunedJVM_v2/index.html
📙 동시 사용자 70명 - 높은 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20221012065541720_high_30분_tunedJVM_v2/index.html
📙 동시 사용자 90명 - 최대 트래픽 조건
Report Link: https://bahmni.github.io/performance-test/baseline_report-20221012095812872_peak_30분_tunedJVM_v2/index.html
Bahmni Wiki · CC BY-SA 4.0