Performance testing of UXPROD-4070 - Reading Room Access


Overview

  • The purpose of the tests is to measure API calls in Quesnelia release in scope of Performance testing of UXPROD-4070 - Reading Room Access. Ticket:  PERF-908 - Getting issue details... STATUS
  • A new feature was deployed as a new App - Reading Room to qcon environment. It should support maximum 25 simultaneous requests to reading rooms API.

Summary

  • Tests finished successfully for all Deny and Allow access flows. No errors.
  • Average response time for POST requests were 30 ms and for the whole flow - 145 ms. 
  • Resource utilization:
    • Module CPU
      • mod-users-bl-b - 63%, mod-users-b - 36%, mod-authtoken-b - 27%, mod-reading-room-b - 25%
    • Module Memory
      • mod-data-export-worker-b - 85%, mod-inventory-b - 80%, mod-consortia-b - 66%, mod-orders-b - 64%, mod-dcb-b - 60%, mod-reading-room-b - 52%, mod-search-b - 48%
    • RDS CPU - 22%

Test Runs 

This table contains response time

Test #

Test Conditions

Duration 

Status

1.

25 vUsers simultaneously20 minsSuccess

Results

The table contains results for testing API requests. TC_RRO is a transaction controller which include all steps during the flow (entering Reading Room App, searching patron by patron id, deny or allow action with 50% probability).

Requests

Executions

Response Times (ms) 

Label

#Samples

FAIL

Average

90th pct

TC_RRO: Deny access flow33690146166
TC_RRO: Allow access flow33820147166
POST Deny /reading-room/{readingRoomsId}/access-log337003034
POST Allow/reading-room/{readingRoomsId}/access-log338203034





GET /users/configurations/entry675802127
GET /users675403241
GET /reading-room-patron-permission/{patronId}675403437
GET /reading-room675802830

Memory Utilization

 Memory consumption
ModuleMemory
mod-data-export-worker-b84.84
mod-inventory-b80.47
mod-consortia-b66.7
mod-orders-b63.49
mod-dcb-b60.42
mod-reading-room-b52.41
mod-search-b48.77
mod-agreements-b48.26
mod-invoice-b47.25
mod-notes-b46.03
mod-copycat-b45.8
mod-service-interaction-b45.27
mod-calendar-b44.72
mod-circulation-item-b43.46
mod-data-import-b43
mod-source-record-manager-b42.77
mod-tags-b42.69
mod-serials-management-b42.21
mod-users-b41.9
mod-licenses-b40.57
mod-data-export-b39.83
mod-erm-usage-harvester-b38.79
edge-dcb-b35.83
mod-permissions-b35.58
edge-caiasoft-b35.38
edge-dematic-b34.93
edge-courses-b34.77
mod-source-record-storage-b34.61
mod-orders-storage-b34.01
okapi-b33.82

Memory graph do not show any growing trend during testing


CPU Utilization 

Reading room related services worked without any spikes.

 CPU utilization
ModuleCPU
mod-permissions-b202.19
mod-users-bl-b62.73
mod-users-b36.07
mod-authtoken-b27.61
mod-reading-room-b25.16
nginx-okapi22.47
mod-consortia-b20.09
okapi-b14.72
mod-inventory-b11.1
mod-configuration-b8.88
mod-quick-marc-b7.3
mod-pubsub-b7.21
mod-dcb-b7.05
mod-audit-b6.32
pub-okapi5.55
mod-erm-usage-harvester-b4.34
edge-dematic-b3.66
mod-licenses-b3.07
mod-kb-ebsco-java-b2.72
mod-tags-b2.63
mod-service-interaction-b2.58
mod-circulation-item-b2.55
mod-sender-b2.44
mod-notes-b2.44
mod-erm-usage-b2.41
mod-batch-print-b2.39
mod-template-engine-b2.39
mod-rtac-b2.39
mod-feesfines-b2.37
mod-lists-b2.36


MSK cluster

CPU (User) usage by broker

Disk usage by broker

Open Search

Dedicated master nodes

Data nodes

RDS CPU Utilization 

RDS CPU utilized 22% during testing

RDS Database Connections


Appendix

Infrastructure

PTF - environment qcon

NameMemory GIBvCPUs
Engine version
db.r6g.xlarge
32 GB4 vCPUs
16.1
  • MSK tenant
    • 2 m5.2xlarge brokers in 2 zones
    • Apache Kafka version 2.8.0
    • EBS storage volume per broker 300 GiB
    • auto.create.topics.enable=true
    • log.retention.minutes=480
    • default.replication.factor=2
  • Open Search fse
    • Data nodes Instance type: r6g.xlarge.search
    • Number of nodes: 6, dedicated master nodes - 3

    • Version: OpenSearch 2.13 (latest)

    • EBS volume size (GiB): 500 GiB
  • Number of records in DB:
    •  cs00000int_0001
      • instances - 6828236
      • items - 7859770
      • holdings - 7328737
    • cs00000int_0002
      • instances - 1163315
      • items - 1754121
      • holdings - 1332559
    • cs00000int_0003
      • instances - 1135806
      • items - 1735291
      • holdings - 1309387

Modules

 Modules QCON
ModuleTask Definition RevisionModule VersionTask CountMem Hard LimitMem Soft LimitCPU UnitsXmxMetaspace SizeMax Metaspace Size
mod-remote-storage1mod-remote-storage:3.2.024920447210243960512512
mod-finance-storage1mod-finance-storage:8.6.021024896102470088128
mod-ncip1mod-ncip:1.14.42102489612876888128
mod-agreements1mod-agreements:7.0.0215921488128000
mod-ebsconet1mod-ebsconet:2.2.0212481024128700128256
mod-consortia1mod-consortia:1.1.023072204812820485121024
mod-organizations1mod-organizations:1.9.02102489612870088128
mod-serials-management1mod-serials-management:1.0.02248023121281792384512
mod-settings1mod-settings:1.0.32102489620076888128
mod-search9mod-search:3.3.0-SNAPSHOT.224225922480204814405121024
edge-dematic1edge-dematic:2.2.01102489612876888128
mod-data-import1mod-data-import:3.1.01204818442561292384512
mod-tags1mod-tags:2.2.02102489612876888128
mod-authtoken5mod-authtoken:2.15.121440115251292288128
edge-courses1edge-courses:1.4.02102489612876888128
mod-inventory-update1mod-inventory-update:3.3.02102489612876888128
mod-notify1mod-notify:3.2.02102489612876888128
mod-configuration1mod-configuration:5.10.02102489612876888128
mod-orders-storage1mod-orders-storage:13.7.02102489651270088128
edge-caiasoft1edge-caiasoft:2.2.02102489612876888128
mod-login-saml1mod-login-saml:2.8.02102489612876888128
mod-erm-usage-harvester1mod-erm-usage-harvester:4.5.02102489612876888128
mod-password-validator1mod-password-validator:3.2.0214401298128768384512
mod-licenses1mod-licenses:6.0.02248023121281792384512
mod-gobi1mod-gobi:2.8.02102489612870088128
mod-bulk-operations1mod-bulk-operations:2.0.023072260010241536384512
mod-fqm-manager1mod-fqm-manager:2.0.12300026001282048384512
edge-dcb1edge-dcb:1.1.02102489612876888128
mod-graphql1mod-graphql:1.12.12102489612876888128
mod-finance1mod-finance:4.9.02102489612870088128
mod-erm-usage1mod-erm-usage:4.7.02102489612876888128
mod-batch-print1mod-batch-print:1.1.02102489612876888128
mod-copycat1mod-copycat:1.6.02102451212876888128
mod-lists1mod-lists:2.0.02300026001282048384512
mod-entities-links1mod-entities-links:3.0.0225922480400144001024
mod-permissions4mod-permissions:6.6.0-SNAPSHOT.3792168415445121024384512
pub-edge1pub-edge:2023.06.142102489612876800
mod-orders1mod-orders:12.8.022048144010241024384512
edge-patron1edge-patron:5.1.02102489625676888128
edge-ncip1edge-ncip:1.9.22102489612876888128
mod-users-bl1mod-users-bl:7.7.021440115251292288128
mod-invoice1mod-invoice:5.8.021440115251292288128
mod-inventory-storage2mod-inventory-storage:27.2.0-SNAPSHOT.73824096369020483076384512
mod-user-import1mod-user-import:3.8.02102489612876888128
mod-sender1mod-sender:1.12.02102489612876888128
edge-oai-pmh1edge-oai-pmh:2.9.021512136010241440384512
mod-data-export-worker1mod-data-export-worker:3.2.123072204810242048384512
mod-rtac1mod-rtac:3.6.02102489612876888128
mod-circulation-storage1mod-circulation-storage:17.2.022880259215361814384512
mod-source-record-storage1mod-source-record-storage:5.8.025600500020483500384512
mod-calendar1mod-calendar:3.1.02102489612876888128
mod-event-config1mod-event-config:2.7.02102489612876888128
mod-courses1mod-courses:1.4.102102489612876888128
mod-circulation-item1mod-circulation-item:1.0.021024896128000
mod-inventory3mod-inventory:20.2.022880259210241814384512
mod-email1mod-email:1.17.02102489612876888128
mod-circulation2mod-circulation:24.2.122880259215361814384512
mod-pubsub1mod-pubsub:2.13.02153614401024922384512
mod-di-converter-storage2mod-di-converter-storage:2.2.22102489612876888128
edge-orders1edge-orders:3.0.02102489612876888128
edge-rtac1edge-rtac:2.7.12102489612876888128
mod-users2mod-users:19.3.2-SNAPSHOT.6912102489612876888128
mod-template-engine1mod-template-engine:1.20.02102489612876888128
mod-patron-blocks1mod-patron-blocks:1.10.021024896102476888128
mod-audit1mod-audit:2.9.02102489612876888128
edge-fqm1edge-fqm:2.0.02102489612876888128
mod-source-record-manager1mod-source-record-manager:3.8.025600500020483500384512
nginx-edge1nginx-edge:2023.06.1421024896128000
mod-quick-marc1mod-quick-marc:5.1.01228821761281664384512
nginx-okapi1nginx-okapi:2023.06.1421024896128000
okapi-b1okapi:5.3.03168414401024922384512
mod-feesfines1mod-feesfines:19.1.02102489612876888128
mod-invoice-storage1mod-invoice-storage:5.8.021872153610241024384512
mod-reading-room7mod-reading-room:1.0.0-SNAPSHOT.112102489612876888128
mod-service-interaction1mod-service-interaction:4.0.12204818442561290384512
mod-dcb1mod-dcb:1.1.02102489612876888128
mod-patron1mod-patron:6.1.02102489612876888128
mod-data-export1mod-data-export:5.0.01204815241024000
mod-oai-pmh1mod-oai-pmh:3.13.024096369020483076384512
edge-connexion1edge-connexion:1.2.02102489612876888128
mod-notes1mod-notes:5.2.021024896128952384512
mod-kb-ebsco-java1mod-kb-ebsco-java:4.0.02102489612876888128
mod-login1mod-login:7.11.02144012981024768384512
mod-organizations-storage1mod-organizations-storage:4.7.02102489612870088128
mod-data-export-spring1mod-data-export-spring:3.2.01204818442561536384512
pub-okapi1pub-okapi:2023.06.142102489612876800
mod-eusage-reports1mod-eusage-reports:2.1.12102489612876888128

Quesnelia release

Methodology/Approach

  1. Test flow:
    1. Go to Reading Room App
    2. Search patron by barcode from prepared file with patron ids
    3. Deny or Allow access with 50% probability
  2. Configuration of load:
    1. 25 vUsers during 20 minutes
    2. Ramp-up - 250 seconds (10 seconds for each vUser)
  3. Preparing to testing:
    1. Generate the csv file with patron barcodes
    2. Reading Room should be public to make it possible to Deny or Allow access (by default - Allowed)