Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Overview

  • In Quesnelia the profile page allows users to upload a profile picture and to view the page with the picture. The purpose of the ticket is to compare performance of Patron Profile Page with loading picture and without loading picture in scope of 
    Jira Legacy
    serverSystem Jira
    columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId01505d01-b853-3c2e-90f1-ee9b165564fc
    keyPERF-790
     ticket on PCP1 environment.
  • Also in scope is checking how the volume of pictures as well as the images' storage choice, DB or S3 bucket affect loading time, 

Summary

  • Four tests were carried out to compare results with different ways to store pictures in User's profile with 500 pictures in source storage. It was possible to enable/disable functionality, change source storage and maximum possible value of file size on the fly with API config requests.requests 
    • Profile Picture functionality does not affect Patron Page loading response times and it works even faster (60-140 ms, depends on the flow). 
  • After populating DB and S3 bucket with additional pictures (3 times more datatotal number after populating - 1800 pictures) two tests were carried out to see how it affect Patron Page loading time.
    • Volume of pictures in DB or S3 bucket does not affect response times during Patron Page loading.

Recommendations & Jiras

  • It was difficult to update mod-user correctly during deploying. Please take a look into the process. It may skip profile_picture table creation or create with not correct number of columns for some reason. The functionality has dependency from mod-permission so the module version should correspond to latest with all needed UI permissions for admin user.

Test Runs 

These baseline test results on mod-users 19.2.2 version without Profile Picture functionality before deploying the version which support profile picture functionality

Requests

Executions

Response Times (ms), Average

Label

#Samples

Disabled Profile Picture

TC: Search User*1044.5
TC: View User**101138.1

 * - TC: Search User - GET request which search user by UUID

 ** - TC: View User - patron page loading for UUID from a previous GET request


This table shows tests of patron page loading with different configuration of source storage

TestsProfile Picture FunctionalitySource storageThreadsLoopsFile size
#1Disabled
5100
#2EnabledDB5100No pictures
#3EnabledDB51003,7 Mb
#4EnabledS3 bucket51003,7 Mb

Tests after populating of DB and S3 bucket with pictures. The volume increased 3 times.

TestsProfile Picture FunctionalitySource storageThreadsLoopsFile size
#5EnabledDB51003,7 Mb
#6EnabledS3 bucket51003,7 Mb

Results

Compare results

Requests

Executions

Response Times (ms), Average

Label

#Samples

Baseline, mod-users 19.2.2 

No Profile Picture functionality

Test #1

Disabled Profile Picture

Test #2

Enabled Profile Picture, DB

Test #3

Enabled Profile Picture, DB

Test #4

Enabled Profile Picture, S3 bucket

Test #5

Enabled Profile Picture, DB

Test #6

Enabled Profile Picture, S3 bucket

TC: Search User50044.535.8733.440.5143.9455.7149.61
TC: View User5001138.1677.6619.49609.09573.09586.37575.99
TC: Edit User500
566.93538.63530.56492.58514.42502.18
TC: Save User500
27.3926.0626.5920.2421.2222.57
TC: View User After Save500
824.54758.31734.89686.45709.75686.77
Total time in flow500
2132.321975.881941.631816.291887.471837.12


Service CPU Utilization

Tests #1, #2, #3

mod-users-b - 89%, mod-configuration-b - 38%

Test #4, #5, #6

During volume testing in tests #5 and #6 mod-users with S3 bucket utilized CPU 10% more than DB (S3 - 93%, DB - 83%).

Service Memory Consumption

mod-users - 68%, mod-inventory - 40%. No some weird behaviour from memory side

RDS CPU Utilization

CPU during volume tests grew from 17% to 30%. The results for RDS CPU utilization are not clear because of every 20 minutes spikes.

RDS Database Connections

Connections were close to 400 during all tests.


Appendix

Errors

  • For all tests common errors (404/Not Found) were in GET /perms/users/{id} and GET /perms/users/{id}/permissions requests. These errors appear if [tenant]_mod_permissions.permissions_users table has no record with this user UUID in jsonb→>'userId'. 

Methodology/Approach

Tests were carried out with jMeter script. 5 thread groups concurrently with 100 loops.


  •  To connect AWS S3 bucket storage add to task definition of mod-users module and restart it with changes in revision
    • "name": "AWS_URL", "value": "https://s3.amazonaws.com" }
    • { "name": "AWS_BUCKET", "value": "cluster-id-or-any-useful-naming-here" }
  • Photo used in tests

    • Expand
      titlePicture


Infrastructure

Environment: PCP1
Release: Poppy (2023 R2)

  • 9 m6i.2xlarge EC2 instances located in US East (N. Virginia)
  • 2 instances of db.r6.xlarge database instances, one reader, and one writer 
  • MSK tenant
    • 4 brokers
    • Apache Kafka version 2.8.0

    • EBS storage volume per broker 300 GiB

    • auto.create.topics.enable=true
    • og.retention.minutes=480
    • default.replication.factor=3

Schemas and tables involved in testing:

  • [tenant]_mod_users.users                                 - 90068 records
  • [tenant]_mod_users.profile_picture                  - 1800 records
  • [tenant]_mod_permissions.permissions_users - 375 records

Modules

Expand
titleAll modules

All modules

ModuleTask Def. RevisionModule VersionTask CountMem Hard LimitMem Soft limitCPU unitsXmxMetaspaceSizeMaxMetaspaceSizeR/W split enabled
pcp1-pvt









Mon Mar 11 10:33:45 UTC 2024









mod-remote-storage11mod-remote-storage:3.0.024920447210243960512512FALSE
mod-ncip10mod-ncip:1.14.42102489612876888128FALSE
mod-finance-storage10mod-finance-storage:8.5.021024896102470088128FALSE
mod-agreements10mod-agreements:6.0.2215921488128000FALSE
mod-ebsconet10mod-ebsconet:2.1.1212481024128700128256FALSE
edge-sip28edge-sip2:3.1.12102489612876888128FALSE
mod-organizations10mod-organizations:1.8.02102489612870088128FALSE
mod-settings11mod-settings:1.0.22102489620076888128FALSE
edge-dematic10edge-dematic:2.1.01102489612876888128FALSE
mod-data-import20mod-data-import:3.0.71204818442561292384512FALSE
mod-search20mod-search:3.0.5225922480204814405121024FALSE
mod-tags10mod-tags:2.1.02102489612876888128FALSE
mod-authtoken16mod-authtoken:2.14.121440115251292288128FALSE
edge-courses2edge-courses:1.3.02102489612876888128FALSE
mod-notify10mod-notify:3.1.02102489612876888128FALSE
mod-inventory-update10mod-inventory-update:3.2.12102489612876888128FALSE
mod-configuration10mod-configuration:5.9.22102489612876888128FALSE
mod-orders-storage10mod-orders-storage:13.6.02102489651270088128FALSE
edge-caiasoft10edge-caiasoft:2.1.02102489612876888128FALSE
mod-login-saml18mod-login-saml:2.7.12102489612876888128FALSE
mod-erm-usage-harvester11mod-erm-usage-harvester:4.4.12102489612876888128FALSE
mod-password-validator10mod-password-validator:3.1.0214401298128768384512FALSE
mod-licenses10mod-licenses:5.0.22248023121281792384512FALSE
mod-gobi10mod-gobi:2.7.12102489612870088128FALSE
mod-fqm-manager7mod-fqm-manager:1.0.32102489612876888128FALSE
mod-bulk-operations9mod-bulk-operations:1.1.723072260010241536384512FALSE
mod-graphql16mod-graphql:1.12.02102489612876888128FALSE
mod-finance10mod-finance:4.8.02102489612870088128FALSE
mod-erm-usage13mod-erm-usage:4.6.02102489612876888128FALSE
mod-copycat10mod-copycat:1.5.02102489612876888128FALSE
mod-lists6mod-lists:1.0.52300026001282048384512FALSE
mod-entities-links15mod-entities-links:2.0.4225922480400144001024FALSE
mod-permissions47mod-permissions:6.5.0-SNAPSHOT.3692168415445121024384512FALSE
pub-edge9pub-edge:2023.06.142102489612876800FALSE
mod-orders10mod-orders:12.7.122048144010241024384512FALSE
edge-patron10edge-patron:5.0.02102489625676888128FALSE
edge-ncip11edge-ncip:1.9.22102489612876888128FALSE
mod-users-bl10mod-users-bl:7.6.021440115251292288128FALSE
mod-inventory-storage15mod-inventory-storage:27.0.424096369020483076384512FALSE
mod-invoice10mod-invoice:5.7.221440115251292288128FALSE
mod-user-import10mod-user-import:3.8.02102489612876888128FALSE
mod-sender10mod-sender:1.11.02102489612876888128FALSE
edge-oai-pmh8edge-oai-pmh:2.7.121512136010241440384512FALSE
mod-data-export-worker10mod-data-export-worker:3.1.223072280010242048384512FALSE
mod-rtac10mod-rtac:3.5.02102489612876888128FALSE
mod-circulation-storage14mod-circulation-storage:17.1.722880259215361814384512FALSE
mod-calendar10mod-calendar:2.5.02102489612876888128FALSE
mod-source-record-storage18mod-source-record-storage:5.7.525600500020483500384512FALSE
mod-event-config10mod-event-config:2.6.02102489612876888128FALSE
mod-courses10mod-courses:1.4.82102489612876888128FALSE
mod-inventory14mod-inventory:20.1.722880259210241814384512FALSE
mod-email10mod-email:1.16.02102489612876888128FALSE
mod-di-converter-storage18mod-di-converter-storage:2.1.52102489612876888128FALSE
mod-circulation14mod-circulation:24.0.1122880259215361814384512FALSE
mod-pubsub13mod-pubsub:2.11.32153614401024922384512FALSE
edge-orders10edge-orders:2.9.12102489612876888128FALSE
edge-rtac7edge-rtac:2.6.22102489612876888128FALSE
mod-template-engine10mod-template-engine:1.19.12102489612876888128FALSE
mod-users30mod-users:19.3.0-SNAPSHOT.6762102489612876888128FALSE
mod-patron-blocks10mod-patron-blocks:1.9.021024896102476888128FALSE
edge-fqm21edge-fqm:1.0.12102489612876888128FALSE
mod-audit10mod-audit:2.8.02102489612876888128FALSE
mod-source-record-manager17mod-source-record-manager:3.7.825600500020483500384512FALSE
nginx-edge9nginx-edge:2023.06.1421024896128000FALSE
mod-quick-marc11mod-quick-marc:5.0.11228821761281664384512FALSE
nginx-okapi9nginx-okapi:2023.06.1421024896128000FALSE
okapi-b11okapi:5.1.23168414401024922384512FALSE
mod-feesfines11mod-feesfines:19.0.02102489612876888128FALSE
mod-invoice-storage10mod-invoice-storage:5.7.021872153610241024384512FALSE
mod-service-interaction10mod-service-interaction:3.0.22204818442561290384512FALSE
mod-data-export12mod-data-export:4.8.711024896102476888128FALSE
mod-patron10mod-patron:6.0.02102489612876888128FALSE
mod-oai-pmh5mod-oai-pmh:3.12.824096369020483076384512FALSE
edge-connexion10edge-connexion:1.1.02102489612876888128FALSE
mod-kb-ebsco-java10mod-kb-ebsco-java:4.0.02102489612876888128FALSE
mod-notes10mod-notes:5.1.021024896128952384512FALSE
mod-organizations-storage10mod-organizations-storage:4.6.02102489612870088128FALSE
mod-data-export-spring12mod-data-export-spring:3.0.21204818442561536384512FALSE
mod-login10mod-login:7.10.12144012981024768384512FALSE
pub-okapi9pub-okapi:2023.06.142102489612876800FALSE
mod-eusage-reports13mod-eusage-reports:2.0.02102489612876888128FALSE