Bahmni Standard 성능 테스트 보고서
이 페이지에는 Bahmni Standard 테스트를 위해 실행한 성능 보고서가 있습니다. Bahmni Standard 1.0.0 Beta를 대상으로 했으며 테스트 시나리오는 관련 문서와 같습니다.
테스트 대상 Bahmni 환경 구성
테스트 스위트 실행 에이전트 구성
AWS EC2 c5.xlarge
CPU: 4 vCPU
RAM: 16 GB
Storage: 10 GB
OS: Ubuntu 22.04.2 LTS
Execution Tools:
Java 11 JDK
Performance Suite: https://github.com/Bahmni/performance-test/tree/bahmni-standard-ciel
Test Data Generator: https://github.com/Bahmni/bahmni-test-data-generator
Initial Data Generated using generator: 99995 patients, 70931 visits, 70931 encounters, 425586 observations위 테스트 데이터를 생성한 뒤 만든 초기 백업은 관련 링크에서 받을 수 있습니다.
📗 테스트 1 - 동시 사용자 70명, 4시간
- 기간: 4시간. 활성 사용자: 70명. Ramp Up: 5분. DB 사전 상태: 환자 99995명, 방문 70931건, encounter 70931건, 관찰 425586건.
관찰 결과:
- 생성된 환자 1730명, 방문 4991건, encounter 2040건, 관찰 12970건.
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic(35 Users) | New Patient Registration → Start OPD Visit | 40% | 1680 | 51 | 107 | 158 | 321 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 1200 | 84 | 143 | 256 | 464 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 1200 | 176 | 310 | 397 | 716 | |
| Upload Patient Document | 10% | 360 | 72 | 127 | 217 | 399 | |
| Doctor50% Traffic(35 Users) | Doctor Consultation1 Observation1 Diagnosis2 Lab Orders (1 Test, 1 Panel)1 Radiology Order1 Procedure Order1 Medication | 100% | 1680 | 389 | 701 | 876 | 2015 |
📗 테스트 2 - 동시 사용자 70명, 8시간. 기간: 8시간
활성 사용자: 70명
Ramp Up: 5분
DB 사전 상태: 환자 101725명, 방문 75922건, encounter 72971건, 관찰 438556건
관찰 결과:
- 생성된 환자 3410명, 방문 9912건, encounter 4060건, 관찰 25296건. 이미 활성인 동일 약물 처방을 추가하려 하여 encounter API 호출 20건이 400으로 실패했습니다.
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic(35 Users) | New Patient Registration → Start OPD Visit | 40% | 3360 | 46 | 122 | 175 | 465 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 2400 | 82 | 160 | 243 | 410 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 2400 | 174 | 345 | 439 | 609 | |
| Upload Patient Document | 10% | 720 | 70 | 102 | 160 | 569 | |
| Doctor50% Traffic(35 Users) | Doctor Consultation1 Observation1 Diagnosis2 Lab Orders (1 Test, 1 Panel)1 Radiology Order1 Procedure Order1 Medication | 100% | 3360 | 298 | 718 | 952 | 1684 |
📗 테스트 3 - 동시 사용자 120명, 8시간. 기간: 8시간
활성 사용자: 120명
Ramp Up: 5분
DB 사전 상태: 환자 105135명, 방문 85834건, encounter 77031건, 관찰 463852건
관찰 결과:
- 생성된 환자 5810명, 방문 17449건, encounter 7049건, 관찰 42969건. 이미 활성인 약물 처방 중복 추가로 encounter API 151건이 400으로 실패했습니다. Post encounter 99백분위가 예상보다 높은 1257ms였습니다.
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic(60 Users) | New Patient Registration → Start OPD Visit | 40% | 5760 | 48 | 154 | 254 | 701 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 4320 | 83 | 217 | 400 | 917 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 4320 | 178 | 417 | 614 | 1128 | |
| Upload Patient Document | 10% | 1440 | 70 | 102 | 160 | 569 | |
| Doctor50% Traffic(60 Users) | Doctor Consultation1 Observation1 Diagnosis2 Lab Orders (1 Test, 1 Panel)1 Radiology Order1 Procedure Order1 Medication | 100% | 5760 | 286 | 867 | 1257 | 2641 |
📗 테스트 4 - 동시 사용자 120명, 24시간
- 기간 24시간, 활성 사용자 120명, Ramp Up 5분, DB 사전 상태 환자 110945명·방문 103283건·encounter 84080건·관찰 506821건.
관찰 결과:
- 생성된 환자 17336명, 방문 51462건, encounter 20716건, 관찰 124238건. 중복 활성 약물 처방으로 encounter API 884건이 400 실패했습니다. delete session, getAllObservation Templates, getActive visits 요청 3건은 502 실패했습니다. Post encounter 99백분위 1413ms(예상 1000), 최대 4015ms(예상 3000). emrapi.sqlSearch.activePatientsByLocation은 95백분위 1056ms, 99백분위 1545ms, 최대 4056ms로 예상치를 넘었습니다.
| Simulations | Scenario | Load share | Patient Count | Min Time (ms) | 95th Percentile (ms) | 99th Percentile (ms) | Max Time (ms) |
|---|---|---|---|---|---|---|---|
| Frontdesk50% Traffic(60 Users) | New Patient Registration → Start OPD Visit | 40% | 17280 | 48 | 179 | 271 | 1688 |
| Existing Patient Search using ID → Start OPD Visit | 30% | 12960 | 83 | 272 | 452 | 1661 | |
| Existing Patient Search using Name → Start OPD Visit | 20% | 12960 | 175 | 532 | 748 | 2257 | |
| Upload Patient Document | 10% | 4320 | 69 | 226 | 366 | 1827 | |
| Doctor50% Traffic(60 Users) | Doctor Consultation1 Observation1 Diagnosis2 Lab Orders (1 Test, 1 Panel)1 Radiology Order1 Procedure Order1 Medication | 100% | 17280 | 275 | 948 | 1413 | 4015 |
📗 테스트 5 - 동시 사용자 200명, 8시간
- 기간 8시간, 활성 사용자 200명, Ramp Up 5분, DB 사전 상태 환자 128281명·방문 154745건·encounter 104796건·관찰 631059건.
관찰 결과:
- 생성된 환자 9110명, 방문 28142건, encounter 10738건, 관찰 64412건. 중복 활성 약물 처방으로 encounter API 1262건이 400 실패했습니다. find drug, get login locations, find encounter, start visit, search by ID 요청은 502 실패했습니다. 다음 표는 예상치를 넘은 API입니다.
| Metric | Expected (ms) | Actual (ms) | |
|---|---|---|---|
| 1 | 95th percentile of post encounter | 1000 | 2481 |
| 2 | 99th percentile of post encounter | 1000 | 3772 |
| 3 | Max time of post encounter | 3000 | 6005 |
| 4 | 95th percentile of emrapi.sqlSearch.activePatientsByLocation | 1000 | 1209 |
| 5 | 99th percentile of emrapi.sqlSearch.activePatientsByLocation | 1000 | 1921 |
| 6 | Max of emrapi.sqlSearch.activePatientsByLocation | 3000 | 3538 |
| 7 | 99th percentile of emrapi.sqlSearch.activePatientsByProvider | 1000 | 1032 |
| 8 | 99th percentile of emrapi.sqlSearch.activePatients | 3000 | 1098 |
| 9 | 95th percentile of Search Patient By Name | 1000 | 1166 |
| 10 | 99th percentile of Search Patient By Name | 1000 | 1686 |
| 11 | Max of Search Patient By Name | 3000 | 3107 |
| 12 | 99th percentile of Search Patient By Identifier | 1000 | 1078 |
최종 DB 상태: 환자 137931명, 방문 182887건, encounter 115534건, 관찰 695471건. 모든 하위 시스템 백업은 관련 링크에서 받을 수 있습니다.
원문 정보
원문 보기 ↗Bahmni Wiki · CC BY-SA 4.0