Performance Test Report

Introduction

This document provides details on the performance measurement approach of prioritized scenarios of MOSIP modules and provides detailed reports on the results.

Scope

APIs in all modules are prioritized based on the high load expectation and usage frequency by other modules.

There are 3 types of performance scenarios covered in this report

  • Prioritized single API performance (For most modules)

  • End to end UI API sequence performance (For pre-registration module)

  • End to end message delivery performance (For web-sub module)

All individual test scenarios from the modules are listed below.

Module Name

API Scenario

API Endpoint

Kernel

Add Audits

v1/auditmanager/audits

Kernel

Client Id - Secret Key

v1/authmanager/authenticate/clientidsecretkey

Kernel

User Id Pwd

v1/authmanager/authenticate/internal/useridPwd

Kernel

Validate Token

v1/authmanager/authorize/admin/validateToken

Kernel

Generate OTP

v1/otpmanager/otp/generate

Kernel

Validate OTP

v1/otpmanager/otp/validate?key={keyValidate}&otp={otpValidate}

Kernel

Send SMS

v1/notifier/sms/send

Kernel

Send EMAIL

v1/notifier/email/send

Kernel

Generate PRID

v1/pridgenerator/prid

Kernel

Generate UIN

v1/idgenerator/uin

Kernel

Generate VID

v1/idgenerator/vid

Kernel

Generate RID

v1/ridgenerator/generate/rid/{centerID}/{machineID}

IDA

Auth with OTP

idauthentication/v1/auth/{mispLicenseKey}/{rpPartnerId}/{rpApiKey}

IDA

KYC with OTP

idauthentication/v1/kyc/{mispLicenseKey}/{ekycPartnerId}/{ekycApiKey}

IDA

Auth with bio

idauthentication/v1/auth/{mispLicenseKey}/{rpPartnerId}/{rpApiKey}

IDA

KYC with bio

idauthentication/v1/kyc/{mispLicenseKey}/{ekycPartnerId}/{ekycApiKey}

IDA

Send OTP

idauthentication/v1/otp/{mispLicenseKey}/{rpPartnerId}/{rpApiKey}

Pre-Registration

Prereg UI end to end flow

Prereg UI end to end flow

Syncdata

Public Key Verify

v1/syncdata/tpm/publickey/verify

Syncdata

Get Certificate

v1/syncdata/getCertificate?applicationId={appID}&referenceId={refID}

Syncdata

Get User Details

v1/syncdata/userdetails?keyindex={keyIndex}

Syncdata

Get Client Settings

v1/syncdata/v2/clientsettings?keyindex={keyIndex}

Syncdata

Get Configs

v1/syncdata/configs/{name}

Syncdata

Get LatestID Schema

v1/syncdata/latestidschema?schemaVersion={schemaVersion}

Syncdata

Get CAcertificates

v1/syncdata/getcacertificates

Regproc

Sync Registration Packet Details

registrationprocessor/v1/registrationstatus/sync

Regproc

Get Packet status

registrationprocessor/v1/registrationstatus/search

Regproc

Upload Registration Packet

registrationprocessor/v1/packetreceiver/registrationpackets

Resident

Request/Send OTP

resident/v1/req/otp

Resident

RID Check Status

resident/v1/rid/check-status

Resident

Auth Lock

resident/v1/req/auth-lock

Resident

Auth Unlock

resident/v1/req/auth-unlock

Resident

Credential Request

resident/v1/req/credential

Resident

Auth History

resident/v1/req/auth-history

Resident

Generate VID

resident/v1/vid

Datashare

Create Data Share URL

v1/datashare/create/{policyId}/{subscriberId}

Datashare

Get Data Share File

v1/datashare/get/{policyId}/{subscriberId}/{randomShareKey}

IDRepo

Retrieve Identity using UIN

idrepository/v1/identity/idvid/{uin}

IDRepo

Retrieve Identity using VID

idrepository/v1/identity/idvid/{vid}

IDRepo

Add Identity

idrepository/v1/identity/

IDRepo

Update Identity

idrepository/v1/identity/

IDRepo

Auth Type Status

idrepository/v1/identity/authtypes/status

IDRepo

Create VID

idrepository/v1/vid

IDRepo

Update VID

idrepository/v1/vid/{vidGenerated}

Masterdata

Get Registration Centers

v1/masterdata/registrationcenters

Masterdata

Get Templates

v1/masterdata/templates

Masterdata

Get Templates By Lang & Temp Code

v1/masterdata/templates/{lang&TempTypeCode}

Masterdata

Get Latest ID Schema

v1/masterdata/idschema/latest?schemaVersion={schemaVersion}

Masterdata

Get Dynamic Fields

v1/masterdata/dynamicfields?pageNumber=0&pageSize=10&sortBy=name&orderBy=desc

Masterdata

Get Users

v1/masterdata/users/{userID}/{time(yyyy-MM-dd'T'HH:mm:ss.sss'Z',)}

Keymanager

Encrypt Data

v1/keymanager/encrypt

Keymanager

Encrypt Data With Pin

v1/keymanager/encryptWithPin

Keymanager

Generate JWT Signature

v1/keymanager/jwtSign

Keymanager

Decrypt Data

v1/keymanager/decrypt

Keymanager

Decrypt Data With Pin API

v1/keymanager/decryptWithPin

Keymanager

Verify JWT Signature

v1/keymanager/jwtVerify

Testing Tools & Techniques

Tools

Purpose

Jmeter

To verify the Load and Performance of all the applications.

Approach

The approach to performance testing differs based on the testing scenarios and are detailed as per the categorization as below.

Prioritized Single API Performance

  • Run a single pod of the application hosting the required API

  • Run four pods each of the dependent applications to cater the load implied from the test application

  • Simulate varied load profilers like 10, 30, 50 etc.. concurrent users from Jmeter for that single API for a period of one hour

  • Record the average and 90th percentile response time metrics specific to each load profiles

  • Verify that JVMs show stable memory and CPU usage over the increasing load profiles.

End to End UI API Sequence Performance

  • Run a single pod for each application hosting the required APIs called directly from Jmeter

  • Run four pods each of the dependent applications to cater the load implied from the test application

  • Simulate varied load profilers like 50, 80, 100 etc.. concurrent users from Jmeter for end to end sequence of APIs called from UI for a period of one hour

  • Record the average and 90th percentile response time metrics for entire end to end API sequence for each load profiles

  • Verify that JVMs show stable memory and CPU usage over the increasing load profiles.

End to End Message Delivery Performance

  • Run a single pod for each application hosting the required APIs called directly from Jmeter

  • Run four pods each of the dependent applications to cater the load implied from the test application

  • Simulate varied load profilers like 10, 30, 50 etc.. concurrent users to publish continues messages to the test application for a period of one hour

  • Record the average and 90th percentile response time metrics for publish API for each load profiles

  • Record the average and 90th percentile delivery time metrics for entire end to end message delivery for each load profiles

Build Details

Title

Description

Build Tag Version

1.2.0-rc2

Performance script source location

https://github.com/mosip/mosip-performance-tests-mt/tree/1.2.0

Environment Setup

Hardware / VM details

CPU (cores)

Memory (GB)

HDD (GB)

OS

Count

Purpose

8

30

768

Cent OS

1

Kubernetes console machine

8

Kubernetes node machines

4

16

500

Ubuntu

1

Database machine

4

16

835

Windows

3

Jmeter test machines

Pod Resource allocation

Pod/Application Names

Resource Allocation (Limits)

Memory (M)

CPU (m)

Heap (M)

kernel-auditmanager-service

2500

1000

1750

kernel-auth-service

2250

500

1500

kernel-otpmanager-service

1750

500

1000

kernel-notification-service

1500

500

1000

kernel-pridgenerator-service

1750

300

1000

kernel-idgenerator-service

3500

500

2000

kernel-ridgenerator-service

1750

500

1000

ida-auth-service

4000

4500

2000

ida-otp-service

3000

3000

2000

prereg-application-service

2500

1000

2000

kernel-syncdata-service

5000

500

4000

regproc-registration-status-service

4000

500

2000

regproc-stage-group-1

5000

1000

4000

resident-service

3000

500

2000

datashare-service

3000

500

2000

idrepo-identity-service

4000

1000

2000

idrepo-vid-service

3000

500

1000

kernel-masterdata-service

2250

500

1500

kernel-keymanager-service

5000

1000

4000

Test Results

Prioritized single API performance

90th Percentile Response Times

Detailed response time details

Detailed Metrics for all 14 modules is available below:

Audit Manager

Run 1: 50 concurrency

Jmeter Aggregate Report

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Add Audit API Execution

231236

777

395

2206

2700

3402

3

8420

0.00%

64.22209

38.88

186.99

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time Graph from Kibana

Dependency app graph for auth manager service was empty so not attached.

Run 2: 30 concurrency

Jmeter Aggregate Report

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Add Audit API Execution

266879

403

105

1199

1893

2409

2

3870

0.00%

74.12657

44.88

215.82

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time Graph from Kibana

Application dependency graph was empty so not attached.

Auth Manager

Run 1: 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Client Id - Secret Key API Execution

241902

449

202

483

597

3352

9

60051

0.16%

66.1073

290.08

28.49

User Id Pwd API Execution

220878

488

488

680

711

872

70

6616

0.00%

61.34721

215.9

30

Validate Token API Execution

451378

239

201

400

496

680

6

3506

0.00%

125.3778

582.61

235.51

Response Time Percentile Graph using Jmeter

We only have the graph for Validate token as the previous ones were cleared

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

Dependency app graph was empty so so not attached.

Notes:

Keycloak was having issue by end of client id secret key API run, so the keycloak was restarted before the start of user id password API

Run 2: 50 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Client Id - Secret Key API Execution

243069

740

499

1694

2100

2833

9

7511

0.00%

67.51412

296.36

29.09

User Id Pwd API Execution

27121

5519

3290

11676

22351

43894

40

60047

0.39%

9.05834

31.82

4.42

Validate Token API Execution

181953

989

810

2107

2496

3206

6

8111

0.00%

50.53694

234.74

94.93

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time Graph from Kibana

Dependency app graph was empty so so not attached.

Notes:

Keycloak was having issue by end of user id password API run, so the keycloak was restarted before the start of validate token API

Kernel services

Run 1: 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Generate OTP API Execution

87777

1229

1104

2160

2496

3207

5

7418

0.00%

24.37841

15.57

48.04

Validate OTP API Execution

150000

1275

1128

2192

2404

3196

0

6268

0.02%

23.4176

14.89

42.63

Notification Manager SMS API Request

433004

246

99

692

808

1119

2

2625

0.00%

120.2695

80.92

259.67

Notification Manager EMAIL API Request

69727

1550

1396

2992

3602

5101

4

13607

0.04%

14.87585

9.48

41.37

PRID Generator API Execution

102606

1052

1022

1893

2073

2432

5

5104

0.00%

28.49246

11.74

51

Generate UIN API Execution

39971

2698

2672

2813

2833

3536

127

8776

0.00%

11.09746

26.27

23.71

Generate VID API Execution

205377

154

139

266

321

423

5

12380

6.39%

193.1971

458.89

412.75

RID Generator API Execution

368802

291

193

743

930

1324

5

5761

0.00%

102.4346

63.42

221.07

Note: idgenerator- generate vid api threw error as “VID not available for allocation error”, so it ran only for around 20 mins rest all other api’s ran for the complete 1 hour run.

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Note: idgenerator & pridgenerator services are vertx apps so there are no kibana graphs for the same

Dependent Application Response Time Graph from Kibana

Dependency app graph was empty so above are the graphs for the application services from kibana

Notes: Some of the kernel service api’s failed with oomkilled & authentication failed issues, so restarted the same and then continued the load test from the next set of api’s that’s why we have multiple graphs from jmeter & grafana.

Run 2: 10 & 50 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Generate OTP API Execution

768397

45

9

92

95

100

5

299

0.00%

213.4406

135.9

420.63

Generate OTP API Request

90000

42

8

90

91

94

4

184

0.00%

225.8061

143.77

445

Validate OTP API Execution

90000

48

14

92

95

100

6

1209

0.00%

201.6066

127.78

366.99

Notification Manager EMAIL API Request

135462

264

195

606

893

1198

3

6299

0.00%

37.62565

23.92

104.68

Notification Manager SMS API Request

4085605

23

1

2

2

8

1

60063

99.89%

1134.873

414.17

2450.28

PRID Generator API Execution

77782

462

459

792

853

949

8

2303

0.00%

21.60354

8.86

38.67

RID Generator API Execution

1881518

86

16

80

97

136

1

60184

99.91%

516.4455

1062.7

1114.59

Generate UIN API Execution

41290

870

875

896

905

924

87

1785

0.00%

11.46714

27.12

24.5

Generate VID API Execution

1132665

157

114

330

355

396

4

3560

87.76%

314.6231

763.26

672.26

Note: idgenerator- generate vid api threw error as “VID not available for allocation error”, so it ran only for around 10 mins & also notification manager sms api & rid generator api failed completely with 502 bad gateway errors for 50 concurrency.

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Note: The grafana graphs for the other services like otpmanager, ridgenerator, pridgenerator & id generator services are lost as they were old data

Application Response Time Graph from Kibana

Note: idgenerator & pridgenerator services are vertx apps so there are no kibana graphs for the same

Dependent Application Response Time from Kibana

Dependency app graph was empty so above are the graphs for the application services from kibana

Notes: Some of the kernel service api’s failed with oomkilled & authentication failed issues, so restarted the same and then continued the load test from the next set of api’s that’s why we have multiple graphs from jmeter & grafana.

IDA

Run 1: 10 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Send OTP Execution

15743

2286

2396

2804

2933

3192

25

3855

0.01%

4.371

12.22

19.2

ID Auth Request With OTP

23060

1560

1547

2058

2192

2424

175

3185

0.02%

6.40415

17.91

33.45

EKYC Auth Request With OTP

22252

1616

1614

2129

2265

2500

294

3286

0.02%

6.17927

794.05

32.46

ID Auth Request With Biometrics

21804

1649

1639

2200

2343

2611

252

3794

0.02%

6.05471

16.93

220.35

EKYC Auth Request With Biometrics

21042

1709

1691

2285

2434

2728

210

3712

0.02%

5.84423

750.99

212.86

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Grafana graphs were erased for older data

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

Run 2: 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Send OTP Execution

13576

7958

7995

8996

9308

10123

4293

12046

0.03%

3.76589

10.54

16.55

ID Auth Request With OTP

20202

5348

5353

6020

6261

6805

2174

8238

0.02%

5.60468

15.68

29.28

EKYC Auth Request With OTP

19889

5430

5445

6142

6402

6949

1027

8252

0.02%

5.51885

709.21

28.99

ID Auth Request With Biometrics

19403

5568

5581

6357

6639

7252

670

9007

0.02%

5.38179

15.06

195.86

EKYC Auth Request With Biometrics

18949

5702

5726

6538

6853

7509

353

8850

0.02%

5.25693

675.52

191.47

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Grafana graphs were erased for older data.

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

Registration Processor

Run 1: 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Sync Registration Packet API Execution

53535

2017

1878

3029

3519

4997

199

14424

0.00%

14.86683

15.96

51.03

Get Packet status API Execution

87599

1232

1233

1552

1630

1776

243

60013

0.00%

24.32718

181.49

63.17

Upload Registration Packet API Execution

3510

30911

30991

33291

34363

38198

478

53099

0.00%

0.96944

0.86

1948.02

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

No data was captured for registration processor registration status service graph in Kibana for the entire test duration.

Note: Registration processor stage group 1 service is a vertx app so there is no Kibana graph for this.

Dependent Application Response Time from Kibana

Run 2: 10 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Sync Registration Packet API Execution

64649

556

550

676

708

909

207

2110

0.00%

17.95645

19.27

61.64

Get Packet status API Execution

49530

726

703

978

1036

1133

169

60012

0.00%

13.7564

145.97

35.72

Upload Registration Packet API Execution

6690

5386

1260

11404

12258

14306

123

18888

0.00%

1.85473

1.65

3727.21

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

No data was captured for registration processor registration status service graph in Kibana for the entire test duration.

Note: registration processor stage group 1 service is a vertx app, so there is no kibana graph for this.

Dependent Application Response Time from Kibana

Syncdata

Run 1: 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Public Key Verify API Execution

435249

247

209

458

574

866

21

5613

0.00%

120.8957

171.66

338.84

Get Certificate API Execution

353275

305

269

546

654

891

20

2089

0.00%

98.12497

276.26

181.01

Get User Details API Execution

11736

9213

9166

9695

10276

14573

730

22247

0.00%

3.25181

11.79

6.16

Get Client Settings API Execution

48931

2207

1999

3703

4397

5803

196

10803

0.00%

13.58629

2368.66

25.82

Get Configs API Execution

20427

5290

5193

5911

6286

7203

1106

10596

0.00%

5.66731

262.18

10.24

Get LatestID Schema API Execution

356781

302

218

651

836

1276

20

3355

0.00%

99.10027

1510.41

179.43

Get CAcertificates API Execution

238505

452

369

878

1101

1648

28

4755

0.00%

66.24493

7158.97

119.1

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

Run 2: 10 & 50 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Public Key Verify API Execution

390125

460

355

947

1206

1815

21

6124

0.00%

108.3583

153.65

303.7

Get Certificate API Execution

300097

599

500

1172

1429

2005

20

5102

0.00%

83.34947

234.5

153.76

Get User Details API Execution

11773

3058

3054

3205

3261

3534

833

5279

0.00%

3.2678

11.84

6.19

Get Client Settings API Execution

52127

690

692

902

1001

1199

79

1900

0.00%

14.478

2524.09

27.51

Get Configs API Execution

18717

1923

1806

2206

2386

3310

1006

4100

0.00%

5.19704

240.42

9.39

Get LatestID Schema API Execution

298200

603

416

1369

1780

2732

21

7979

0.00%

82.82468

1262.19

149.96

Get CA certificates API Execution

220333

816

599

1747

2248

3424

28

8297

0.00%

61.19382

6613.03

110.02

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

Resident

Run 1: 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Request OTP

5277

20527

13618

60012

60013

60021

1325

60079

11.29%

1.45586

1.33

2.92

RID Check Status

73109

1477

1013

3220

4260

6770

105

21521

0.00%

20.29957

12.91

40.1

Auth Lock API

16981

6364

5670

10923

12893

17213

567

31744

0.00%

4.71056

3.19

9.53

Auth Unlock API

16223

6662

5966

11496

13537

17909

375

33340

0.00%

4.49985

3.06

9.26

Request Credential API

16253

6652

5994

12227

14217

19044

273

38494

0.00%

4.50174

2.95

9.83

Auth History API

5100

21221

18707

37493

44213

59170

1479

60023

0.82%

1.41057

0.99

2.89

Generate VID API Execution

14410

7504

6832

12998

15335

20769

600

37105

0.00%

3.99359

2.67

8.06

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

CPU container usage grafana graphs are not available for resident service container

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

Run 2: 10 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Request OTP

4810

7493

7549

8397

8635

9405

1463

13833

0.00%

1.33296

0.93

2.67

RID Check Status

56043

641

562

1101

1379

1959

103

3881

0.00%

15.56573

9.91

30.75

Auth Lock API

10000

2411

2010

4085

4872

6406

258

9587

0.02%

4.12136

2.79

8.34

Auth Unlock API

10000

2438

2060

4165

4900

6349

401

9044

0.02%

4.08215

2.77

8.4

Request Credential API

10000

2440

1557

5310

6421

9416

215

13339

0.02%

4.0734

2.67

8.9

Auth History API

4490

8025

7987

9591

10157

11535

2059

14581

0.00%

1.24482

0.85

2.55

Generate VID API Execution

10000

2720

2090

5090

6213

8163

385

11400

0.02%

3.6507

2.45

7.37

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

CPU container usage grafana graphs are not available for resident service container

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

Datashare

Run 1: 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Create Data Share URL Execution

13434

8044

7901

11306

12400

14202

1421

18805

0.00%

3.72685

3.44

3845.7

Get Data Share File Execution

185315

582

302

804

2775

4705

8

12710

0.00%

51.47058

4263.17

115.79

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

Run 2: 10 & 50 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Create Data Share URL Execution

13253

2716

2528

4035

4532

5426

249

12256

0.00%

3.6798

3.4

3797.15

Get Data Share File Execution

179001

1004

602

2498

2899

3520

10

7101

0.00%

49.71529

33.6

111.84

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

ID Repository

Run 1: 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Add Identity (bio) Execution

9000

7407

7366

9210

9878

11094

110

15147

27.29%

4.02176

2.88

4397.92

Retrieve Identity using UIN

505883

213

198

295

358

697

22

1304

0.22%

140.5188

243.91

303.41

Retrieve Identity using VID

130678

825

506

1701

1913

2452

13

3792

0.46%

36.29708

62.91

78.59

Create VID Execution

105575

1022

798

1992

2296

2501

99

3618

0.48%

29.32075

20.84

69.64

Update Identity Execution

15000

3167

3085

4707

5207

6402

121

9115

2.49%

9.3834

6.7

34.79

Update VID Execution

15000

1455

1403

2388

2496

2699

5

3516

0.67%

20.48912

15.76

49.04

Note: Add Identity api threw a lot of duplicate key constraint errors ~27.29 %

\norg.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "uk_uin_reg_id"

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

No data was captured for the Kibana graphs of id repository identity & VID services

Dependent Application Response Time from Kibana

Run 2: 10 & 50 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Retrieve Identity using UIN

389893

461

313

994

1209

1598

28

2317

0.22%

108.2907

187.86

233.82

Retrieve Identity using VID

110457

325

191

800

914

1194

12

1983

0.46%

30.67593

53.14

66.42

Add Identity (bio) Execution

15000

2868

2901

3402

3750

4196

140

4896

26.35%

3.46978

2.48

3794.32

Update Identity Execution

20000

1269

1328

1973

2276

2900

14

4586

3.86%

7.84082

5.57

29.07

Auth Type Status Execution

306901

586

418

1198

1496

1892

33

2702

0.00%

85.2427

53.28

226.51

Create VID Execution

77102

466

302

1002

1181

1513

45

2271

0.48%

21.41616

15.2

50.86

Update VID Execution

13950

576

423

1138

1282

1612

0

2377

0.51%

17.23997

13.23

41.26

Note: Add Identity API threw a lot of duplicate key constraint errors ~27.29 %

\norg.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "uk_uin_reg_id"

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

No data was captured for the Kibana graphs of ID repository identity & VID services

Dependent Application Response Time from Kibana

Masterdata

Run 1: 30 & 50 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Get Registration Centres API Execution

21480

5030

4901

7806

9098

10898

253

17595

0.00%

5.96056

3609.27

10.74

Get Templates API Execution

170957

1051

802

2505

2992

4294

4

10242

0.00%

47.46712

4540.57

85.06

Get Templates By Lang & Temp Code API Execution

47241

2285

2002

3885

4555

5526

4

9282

0.00%

13.11962

16.77

23.87

Get Latest ID Schema API Execution

69179

2601

2501

4388

5200

6573

5

10700

0.00%

19.20952

279.19

34.84

Get Dynamic Fields API Execution

55536

1944

1884

2893

3098

3416

14

5094

0.00%

15.42405

81.76

28.45

Get Users API Execution

44399

2432

2295

4196

4597

5785

6

9189

0.00%

12.3283

9.31

22.42

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

No data was captured for the Grafana - CPU & memory container usage graphs

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

No data was captured for dependency apps in kibana

Run 2: 10 & 30 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Get Registration Centres API Execution

2281

15799

15772

18399

19296

21013

1904

23509

0.00%

0.63243

382.95

1.14

Get Templates API Execution

93851

1149

1198

2190

2533

2997

4

5791

0.00%

26.0657

2493.37

46.71

Get Templates By Lang & Temp Code API Execution

46088

780

699

1300

1403

1592

4

2905

0.00%

12.79908

16.36

23.29

Get Latest ID Schema API Execution

68743

1570

1399

2694

2865

3896

5

5604

0.00%

19.09314

277.5

34.62

Get Dynamic Fields API Execution

58867

611

489

1113

1200

1301

11

1531

0.00%

16.34786

86.66

30.16

Get Users API Execution

43642

824

901

1320

1475

1595

6

2602

0.00%

12.12249

9.15

22.04

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

No data was captured in Grafana for CPU & memory container usage graphs

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

No data was captured for dependency apps in Kibana.

Key Manager

Run 1: 30 & 50 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Encrypt Data API Execution

1053790

170

189

287

297

386

6

1604

0.00%

292.7122

317.26

753.15

Encrypt Data With Pin API Execution

10443

10346

10406

13892

14705

16399

1589

19495

0.00%

2.89775

2.2

6.92

Generate JWT Signature API Execution

558466

321

310

437

485

798

14

1579

0.00%

155.117

417.01

392.79

Decrypt Data API Execution

516634

348

335

475

528

858

14

1442

0.00%

143.4985

93.17

428.67

Decrypt Data With Pin API Execution

10349

10442

10515

14208

15288

17010

1704

21202

0.00%

2.87069

1.86

7.13

Verify JWT Signature API Execution

1582654

113

90

209

305

628

3

1404

0.00%

439.616

297.94

1995.87

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

No data was captured in Grafana for CPU & memory container usage graphs.

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

No data was captured for dependency apps in Kibana.

Run 2: 10 & 80 concurrency

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Encrypt Data API Execution

927329

310

292

583

707

930

6

1901

0.00%

257.552

279.65

662.68

Encrypt Data With Pin API Execution

10361

3475

3401

4305

4694

5296

711

6699

0.00%

2.87609

2.19

6.87

Generate JWT Signature API Execution

521059

552

531

669

895

1146

17

2150

0.00%

144.718

388.77

366.46

Decrypt Data API Execution

488850

588

549

827

1051

1366

15

4124

0.00%

135.7712

88.16

405.59

Decrypt Data With Pin API Execution

10089

3568

3500

4402

4699

5299

1109

6497

0.00%

2.80138

1.82

6.96

Verify JWT Signature API Execution

1214824

236

95

602

808

1334

3

2998

0.00%

337.423

229.34

1531.91

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Application Response Time Graph from Kibana

Dependent Application Response Time from Kibana

No data was captured for dependency apps in kibana.

End to End UI API Sequence Performance Metrics

Pre-registration

Run 1: 50 concurrency

90th Percentile response time ( End to end UI flow) - 18.9 sec

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

PreReg Launch

2481

14

6

29

57

151

4

612

0.00%

0.68942

2.5

0.34

PreReg Send OTP

2481

5400

3910

12575

16399

24523

34

45492

0.00%

0.68841

0.48

0.29

PreReg Validate OTP

2480

3369

2189

8182

11242

19216

49

34813

0.00%

0.68807

2.15

1.16

PreReg Enter Demographic Details And Click Continue

2473

17520

15587

30322

34981

45715

1175

72550

0.00%

0.68645

23.3

6.15

PreReg Upload Documents

2463

7707

6095

15331

18711

28729

392

41042

0.00%

0.68532

3.17

371.05

PreReg Click Continue After Uploading Documents

2455

14692

13030

26844

31673

40660

243

56219

0.00%

0.68426

7.93

3.53

PreReg Preview Document Details And Continue

2446

14298

12314

25695

30528

38385

1667

54085

0.00%

0.68189

8.23

2.21

PreReg Select Center And Continue

2438

3410

2213

8151

10711

17372

65

32880

0.00%

0.68227

41.99

1.32

PreReg Select Slot And Continue

2438

6837

5402

13687

17525

25248

201

38337

5.41%

0.68167

4.19

2.97

PreReg Logout

2431

17

11

45

66

84

7

442

0.00%

0.68089

2.45

0.87

TOTAL

24586

7328

4598

18901

24527

35440

4

72550

0.54%

6.81687

95.81

388.5

Note: Error percentage for pre-registration is due to the unavailability of slots for 53 unique registration centres.

Slots were generated for 947 unique reg centres and for the rest 53 centres slots were not created so this needs to be debugged further.

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Self-response time graphs from Kibana

Dependent Application Response Time from Kibana

Notes: Prereg is connected to the internal database because when we tried connecting it to the external database we were getting failures while booking appointments manually.

Run 2: 80 concurrency

90th Percentile response time ( End to end UI flow) - 30.9 sec

Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

PreReg Launch

2389

66

9

183

412

707

4

1084

0.00%

0.66437

2.4

0.33

PreReg Send OTP

2389

8777

6358

19932

25454

34345

31

60013

0.08%

0.66207

0.46

0.28

PreReg Validate OTP

2385

5905

4286

12937

16567

28790

60

46664

0.00%

0.661

2.3

1.12

PreReg Enter Demographic Details And Click Continue

2381

29540

26824

50104

56729

70781

3687

99983

0.00%

0.66017

22.78

5.89

PreReg Upload Documents

2358

13605

11462

26031

32216

46567

752

62849

0.04%

0.6566

3.04

355.5

PreReg Click Continue After Uploading Documents

2350

24769

21697

42821

53048

76185

764

118903

0.04%

0.65785

7.62

3.39

PreReg Preview Document Details And Continue

2336

22505

19701

39685

47397

67283

1633

96086

0.13%

0.65444

7.89

2.12

PreReg Select Center And Continue

2319

5791

3802

13131

18470

29293

63

60365

0.04%

0.65156

39.94

1.26

PreReg Select Slot And Continue

2316

11313

9361

21756

27996

39136

303

61613

5.70%

0.65044

3.99

2.83

PreReg Logout

2309

139

25

499

648

986

8

1387

0.00%

0.65443

2.36

0.84

TOTAL

23532

12254

7990

30921

39493

57968

4

118903

0.60%

6.51774

91.88

371.52

Note:

  • Error percentage for pre-registration is due to the unavailability of slots for 53 unique reg centres. Slots were generated for 947 unique reg centres and for the rest 53 centres slots were not created so this needs to be debugged further.

  • Got some 504 gateway timeout errors for a few of the transactions before booking an appointment.

Response Time Percentile Graph using Jmeter

CPU and Memory Utilization Graphs using Grafana

Self-response time graphs from Kibana

Dependent Application Response Time from Kibana

Notes: Pre-registration is connected to the internal database because when we tried connecting it to an external database we were getting failures while booking appointments manually.

End to End Message Delivery Performance Metrics

30 concurrency

  • 90th Percentile response time

    • Publish (10 subscribers, 8 topics) - 0.221 sec

    • End to end message delivery (10 subscribers, 8 topics) -

      • finalAvgNinetiethPercentile=5777.9 sec finalAvgTurnAroundTime=3327.8 sec

      • Aggregate Report from Jmeter

  • Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Publish Messages

605668

177

173

221

239

295

5

1759

0.00%

168.2339

52.74

333.1

  • Response Time Percentile Graph using Jmeter

50 concurrency

  • 90th Percentile response time

    • Publish (10 subscribers, 8 topics) - 0.25 sec

    • End to end message delivery (10 subscribers, 8 topics)

      • finalAvgNinetiethPercentile = 9810 sec

      • finalAvgTurnAroundTime = 5719.9 sec

  • Aggregate Report from Jmeter

Label
# Samples
Average
Median
90% Line
95% Line
99% Line
Min
Max
Error %
Throughput
Received KB/sec
Sent KB/sec

Publish Messages

861179

208

202

252

270

316

4

2083

0.00%

239.2059

74.99

473.62

  • Response Time Percentile Graph using Jmeter

Last updated

Copyright © 2021 MOSIP. This work is licensed under a Creative Commons Attribution (CC-BY-4.0) International License unless otherwise noted.

#300: Mock Services -1st draft

Change request updated