Check-in-check-out Test Report (Quesnelia)

Check-in-check-out Test Report (Quesnelia)

Overview

The test's target is to investigate the behaviour of the Check-In/Check-Out activities during fixed load tests.

https://folio-org.atlassian.net/browse/PERF-835

Summary

Check-In/Check-Out tests on Quesnelia carried out with 8, 20, 30, 75 virtual users during 45 minutes and with 30 virtual users during longevity test (24 hours) to detect any trends in resource utilization

45 minute tests

  • Response times in tests with 8, 20, 30 virtual users didn't differ a lot but the lowest response times were with 20 virtual users. Average in 20 vUsers test Check-In - 404 ms, average Check-Out - 729 ms

  • The highest response times results were with 75 virtual users. Average Check-In - 580 ms, Check-Out - 1039 ms

Longevity test

  • Average Check-In - 454 ms, Check-Out - 1060 ms (the results from the test with absent dcb-system-user)

  • No memory leaks during longevity test

Comparison with Poppy Results:

  • CI/CO response times improved by 10%-15% in 8, 20 vUsers and 5% in 30 vUsers tests.

  • For 75 vUsers test Check-in and Check-out response times improved 7% in Quesnelia release.

Resources

  • CPU utilization

    • 45 minute and longevity tests used CPU in correspondence with number of vUsers but there are some modules that spiked during 75 vUsers test -  mod-users-b - 132%, mod-authtoken-b - 98%, nginx-okapi - 84%.

  • Memory consumption

    • 45 minute and longevity tests didn't reveal some problems with memory usage by modules. So no memory leaks detected.

  • RDS CPU utilization average

    • 8 vUsers - 13%, 20 vUsers - 22%, 30 vUsers - 30%, 75 vUsers - 63% During longevity test CPU grew from 30% to 45%. So it has growing trend during longevity test that can be explained by absent dcb-system-user in mod-dcb module.

  • CPU (User) usage by broker

    • Common CPU utilization by broker during all tests was 15% with equal distribution between brokers

Common notes

  • Longevity test revealed CPU Utilization growing trend for mod-dcb-b module.

Recommendations

  • Control mod-dcb-b module related system user creation. For some reason dcb-system-user was not created after environment creation, additional redeploy of module, enabling resolved the issue. It may lead to a huge performance degradation. 

  • Add more CPU to mod-users to exclude module fluctuations

45 minute tests

  • Response times in tests with 8, 20, 30 virtual users didn't differ a lot but the lowest response times were with 8 virtual users. Average Check-In - 470 ms, average Check-Out - 838 ms

  • The highest response times results were with 75 virtual users. Average Check-In - 720 ms, Check-Out - 1301 ms

  • Additional test was carried out with changed configuration for mod-dcb-b (raised from 128 to 256). It helped to decrease CPU utilization for mod-dcb-b twice from 407% to 202% and nginx-okapi from 102% to 70% which helped to decrease response times more than 20% if to compare results with 128 CPU and 256 CPU. For this test average Check-In - 587 ms, Check-Out - 1055 ms. which is better than Poppy release - 5%.

Longevity test

  • Average Check-In - 454 ms, Check-Out - 1060 ms

  • No memory leaks during longevity test

Comparison with Poppy Results:

  • CI/CO response times increased by 4-7% for 20 and 30 vUsers tests.

  • For 75 vUsers test, the increase was 15%.

  • For 75 vUsers test CO response time was 1116 ms in Poppy and 1301 ms in Quesnelia

CPU utilization

  • 45 minute and longevity tests used CPU in correspondence with number of vUsers but there are some modules that spiked during 75 vUsers test -  mod-dcb-b - 407% with 128 CPU, mod-authtoken-b - 120%, nginx-okapi - 102%.

  • Additional test was carried out with changed configuration for mod-dcb-b (raised from 128 to 256). It helped to decrease CPU utilization for mod-dcb-b twice from 407% to 202% and nginx-okapi from 102% to 70% which helped to decrease response times more than 20% if to compare results with 128 CPU and 256 CPU.

Memory consumption

  • 45 minute and longevity tests didn't reveal some problems with memory usage by modules. So no memory leaks detected.

RDS CPU utilization

  • 8 vUsers - 13%, 20 vUsers - 22%, 30 vUsers - 30%, 75 vUsers - 50% During longevity test CPU grew from 30% to 45%. So it has growing trend during longevity test.

CPU (User) usage by broker

  • Common CPU utilization by broker during all tests was 15% with equal distribution between brokers

Common notes

  • Longevity test revealed CPU Utilization growing trend for mod-dcb-b module.

Recommendations

  • Investigate mod-dcb-b module behaviour. After 75 vUsers test modules require some time to stabilize CPU consumption.

Test Runs 

The following table contains  tests configuration information

Test #

vUsers

Ramp-up, sec

Duration, sec 

1

8

80

2700

2

20

200

2700

3

30

300

2700

4

75

750

2700

5

30

300

86400

Results

Errors:

  • Error messages: POST_circulation/check-out-by-barcode (Submit_barcode_checkout)_POST_422. 422/Unprocessable Entity. Happen expectedly if instance was checked out already. Error rate - 0.06% which is acceptable.

Response time

The table contains results of Check-in, Check-out tests in Quesnelia release. 

45 minute tests

 

8 vUsers  

20 vUsers  

30 vUsers  

75 vUsers  

 

8 vUsers  

20 vUsers  

30 vUsers  

75 vUsers  

Requests

Response Times (ms)

 Response Times (ms)

 Response Times (ms)

 Response Times (ms)

Label

#Samples

Average

95th pct

#Samples

Average

95th pct

#Samples

Average

95th pct

#Samples

Average

95th pct

Check-Out Controller

1857

741.82

904.1

4614

729.26

859

6637

767.83

935

14637

1039.21

1323

Check-In Controller

1394

408.2

484

3378

404.24

475

5063

427.22

527

11136

580.9

752

POST_circulation/check-out-by-barcode (Submit_barcode_checkout)

1858

256.34

337

4615

247.44

297

6639

252.35

310

14642

343.5

457

POST_circulation/check-in-by-barcode (Submit_barcode_checkin)

1395

172.66

225.2

3382

170.31

205

5080

174.75

224.95

11159

242.61

323

GET_circulation/loans (Submit_barcode_checkout)

1856

136.69

185.15

4613

133.16

161

6636

138.46

176

14628

186.43

259

Longevity test (with absent dcb-system-user)

 30 vUsers Longevity 

 

 

 

 30 vUsers Longevity 

 

 

 

Requests

Samples, Response Times 

 

 

Label

#Samples

95th pct

Average

Check-Out Controller

135591

1247

1065

Check-In Controller

101990

525

454

POST_circulation/check-out-by-barcode (Submit_barcode_checkout)

135593

410

340

POST_circulation/check-in-by-barcode (Submit_barcode_checkin)

101981

228

193

Comparisons

This table has comparison between average values of response times of Quesnelia and Poppy releases

 

8 vUsers   

20 vUsers   

30 vUsers   

75 vUsers   

 

8 vUsers   

20 vUsers   

30 vUsers   

75 vUsers   

Requests

Response Times   

Response Times   

Response Times   

Response Times   

 

Poppy

Quesnelia

 

 

Poppy

Quesnelia

 

 

Poppy

Quesnelia

 

 

Poppy

Quesnelia

 

 

Label

Average

Delta,ms

Difference,%

Average

Delta,ms

Difference,%

Average

Delta,ms

Difference,%

Average

Delta,ms

Difference,%

Check-Out Controller

832

741

-91

-10.94%

805

729

-76

-9.44%

807

767

-40

-4.96%

1116

1039

-77

-6.90%

Check-In Controller

479

408

-71

-14.82%

450

404

-46

-10.22%

449

427

-22

-4.90%

622

580

-42

-6.75%

Comparison of Longevity test (absent dcb-system-user in Quesnelia)

30 vUsers Longevity  

30 vUsers Longevity  

Response Times 

 

 

Poppy

Quesnelia

 

 

Average

Average

Delta,ms

Difference,%

1025

1065

40

3.90%

471

454

-17

-3.61%

 

API requests where response times >= 100 ms

API

30 vUsers  Poppy

Average, ms

30 vUsers  Quesnelia

Average, ms

API

30 vUsers  Poppy

Average, ms

30 vUsers  Quesnelia

Average, ms

POST checkout-by-barcode

281

252

POST checkin-by-barcode 

173

175

GET circulation/loans

135

138

Response time

The table contains results of Check-in, Check-out tests in Quesnelia release. 

45 minute tests

 

8 vUsers  

20 vUsers  

 

8 vUsers  

20 vUsers