Versions Compared

Key

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

Table of Contents

Overview

...

  • For a single user, performance is better in the Eureka environment. However, when scaled to 20 users, there is a performance degradation of approximately 7.8%

  • Very high load for the OpenSearch cluster with more than 52 search operations per second. ERROR: "Too Many Requests" observed during the test with 20 users - non-Eureka. 
  • Service CPU utilization was up to 60% 6% for mod-search and 5% for mod-inventory-storage, for all other services CPU did not exceed 4%.

  • Memory utilization was stable and no memory leaks or OOM issues were observed.

  • RDS CPU utilization was about up to 6%.

  • Open search CPU utilization was up to 100% with 20 user tests.

Recommendations & Jiras

Errors during 20 users - non-Eureka test are due to a very high load for the OpenSearch cluster. For this test we have a throughput of about 55 ops/s and the maximal Elastic Search throughput is 52 search operations (https://repost.aws/knowledge-center/opensearch-resolve-429-error) according to our cluster configurations.

  • Use the following formula to calculate maximum active threads for search requests:int ((# of available_processors * 3) / 2) + 1.
  • For an r6g.2xlarge.search node, you can perform a maximum of 13 search operations:
    (8 VCPUs * 3) / 2 + 1 = 13 operations
  • For an OpenSearch Service cluster with four nodes, you can perform a maximum of 52 search operations:
    4 nodes * 13 = 52 operations

To avoid this error, either increase the number of OpenSearch data nodes to 5 or scale the size of the data nodes to a bigger one.

Test Runs

...

mod-search performance is good, maximal Elastic Search throughput is 52 search operations (https://repost.aws/knowledge-center/opensearch-resolve-429-error).

Show total requests processed increase as we increase the number of users concurrently.

...

60 minutes tests

Test#Test nameresultsComments
11 user - non-EurekaSuccess0 errors
220 users - non-EurekaCompleted with errors3224 errors out of 199179 API calls
ERROR: "Too Many Requests"
320 users - non-Eureka
(avg)20 users - Eureka (avg)%Total requests processed in 60 minutes test run19657208115.9%199179183864-7.6%Average throughput5.44 ops/s5.77 ops/s6%
55.2 ops/s
50.9 ops/s-7.8%Average response time194185-4.6%3653824.7%
retestCompleted with errors41894 errors out of 252249 API calls
ERROR: "Too Many Requests"
41 user - EurekaSuccess0 errors
520 users - EurekaSuccess0 errors

Results and Comparison Eureka and non-Eureka

mod-search performance is good, maximal Elastic Search throughput is 52 search operations (https://repost.aws/knowledge-center/opensearch-resolve-429-error).

Show total requests processed increase as we increase the number of users concurrently.

MSF_GET /search/authorities keyword <> random sentence393207416200-3.3816439435403682477-11.

1 user - non-Eureka(avg)1 user - Eureka (avg)%20 users - non-Eureka(avg)20 users - Eureka (avg)
transactionNumber Of SamplesAverageNumber Of SamplesAverage%Number Of SamplesAverageNumber Of SamplesAverage%
%
Total requests processed in 60 minutes test run19657208115.9%199179 (3224 errors)183864-7.6%
Average throughput5.44 ops/s5.77 ops/s6%
55.2 ops/s
50.9 ops/s-7.8%
Average response time194185-4.6%3653824.7%



1 user - non-Eureka1 user - Eureka
20 users - non-Eureka20 users - Eureka
transactionNumber Of SamplesAverageNumber Of SamplesAverage%Number Of SamplesAverageNumber Of SamplesAverage%
MSF_GET /search/authorities keyword <> random sentence393207416200-3.3816439435403682477-11.6667
MSF_GET /search/authorities keyword <> randomword393202417194-3.960441045163684462-10.4651
MSF_GET /search/authorities keyword = *random sentence*39312244161142-6.699353933212036821545-27.1226
MSF_GET /search/authorities keyword = random sentence3933041623-23.33333937953682245157.8947
MSF_GET /search/authorities keyword = randomword3934441732-27.27274246127368423484.25197
MSF_GET /search/authorities keyword == random sentence3932941622-24.13793949923683225144.5652
MSF_GET /search/authorities keyword == randomword3934341731-27.9074041138368324476.81159
MSF_GET /search/authorities keyword all *randomword*393891417821-7.856343997162636831191-26.7528
MSF_GET /search/authorities keyword all random sentence3933241725-21.87539791043683243133.6538
MSF_GET /search/authorities keyword all randomword3946741754-19.4035481141368626285.8156
MSF_GET /search/authorities keyword any random sentence3939941686-13.13133958226368327220.35398
MSF_GET /search/authorities keyword any randomword3945541743-21.81824618129368523279.84496
MSF_GET /search/instances: contributors <> 2random words393158416152-3.79747387737936794087.651715
MSF_GET /search/instances: contributors = *randomword393198416192-3.0303388942936804412.797203
MSF_GET /search/instances: contributors = randomword*3935741646-19.298238921013680227124.7525
MSF_GET /search/instances: contributors == 2random words3932341617-26.0873880783679217178.2051
MSF_GET /search/instances: contributors all 2random words3932341616-30.43483876853677231171.7647
MSF_GET /search/instances: contributors all randomword3935841647-18.965538961093680232112.844
MSF_GET /search/instances: contributors any 2random words3936541651-21.538538851153680244112.1739
MSF_GET /search/instances: keyword all random sentence AND languages == randomlang7864083235-12.57747987354233137.7551
MSF_GET /search/instances: languages == (lang) AND items.status.name == ("Available" OR "In transit")786119832113-5.042027743273735034626.73993
MSF_GET /search/instances: languages == lang786110832104-5.454557743260734934432.30769
MSF_GET /search/instances: languages == lang AND items.status.name == "Available"786123832114-7.317077744287735035322.99652
MSF_GET /search/instances: subjects <> 1randomword3937041659-15.714338671263670338168.254
MSF_GET /search/instances: subjects = (randomword OR randomword)3936741652-22.38813905129368224791.47287
MSF_GET /search/instances: subjects = *1randomword3933144163181.27388538686453672601-6.82171
MSF_GET /search/instances: subjects = 1randomword*3937041658-17.142938691133672235107.9646
MSF_GET /search/instances: subjects == 1randomword3934041632-203868123367023288.61789
MSF_GET /search/instances: subjects all 1randomword3934741637-21.27663869124367224194.35484
MSF_GET /search/instances: subjects all randomword AND title all randomword3933641627-253930983682237141.8367
MSF_GET /search/instances: subjects all randomword NOT title all randomword3938141667-17.2843900125368123588
MSF_GET /search/instances: subjects all randomword OR title all randomword3939641683-13.54173913165368226158.18182
MSF_GET /search/instances: subjects any 2random words3936341652-17.46033868133367025591.72932
MSF_GET /search/instances: title <> 3 word sentence3931674161670386340336704152.977667
MSF_GET /search/instances: title == 3 word sentence3933641629-19.44443866933670237154.8387
MSF_GET /search/instances: title all *1randomword393340341634651.8219223859547136703984-27.1797
MSF_GET /search/instances: title all 1randomword*3939441678-17.02133860144367026483.33333
MSF_GET /search/instances: title all 3 word sentence3934041638-538671013670236133.6634
MSF_GET /search/instances: title any 3 word sentence393408416395-3.1862738677353670653-11.1565
Total16901194.108717895185.1522-4.61418170397365.1304158131382.15224.661824

Test Details

...

1 user - non-Eureka

transactionNumber Of SamplesAverageMedianpct90pct95pct99MinMax
MSF_GET /search/authorities keyword <> random sentence393207206241252266171266
MSF_GET /search/authorities keyword <> randomword393202202241250311165311
MSF_GET /search/authorities keyword = *random sentence*393122412201468148115099211509
MSF_GET /search/authorities keyword = random sentence3933030395311522116
MSF_GET /search/authorities keyword = randomword39344449113420119201
MSF_GET /search/authorities keyword == random sentence39329284046642165
MSF_GET /search/authorities keyword == randomword393434411213617519175
MSF_GET /search/authorities keyword all *randomword*3938918951331134313825001382
MSF_GET /search/authorities keyword all random sentence3933230436519623196
MSF_GET /search/authorities keyword all randomword394676417333238319383
MSF_GET /search/authorities keyword any random sentence393998321830531023310
MSF_GET /search/authorities keyword any randomword394555514015224418244
MSF_GET /search/instances: contributors <> 2random words393158158183188225131225
MSF_GET /search/instances: contributors = *randomword393198189394646668157668
MSF_GET /search/instances: contributors = randomword*393574821022126317264
MSF_GET /search/instances: contributors == 2random words3932323345114416145
MSF_GET /search/instances: contributors all 2random words3932323324410317103
MSF_GET /search/instances: contributors all randomword393585815922539617398
MSF_GET /search/instances: contributors any 2random words393656613418743418437
MSF_GET /search/instances: keyword all random sentence AND languages == randomlang786402913125729422294
MSF_GET /search/instances: languages == (lang) AND items.status.name == ("Available" OR "In transit")78611911926427131941319
MSF_GET /search/instances: languages == lang78611011024825229440294
MSF_GET /search/instances: languages == lang AND items.status.name == "Available"78612312126227033141331
MSF_GET /search/instances: subjects <> 1randomword393706911515922818229
MSF_GET /search/instances: subjects = (randomword OR randomword)393676711819256519565
MSF_GET /search/instances: subjects = *1randomword393314309475543546259546
MSF_GET /search/instances: subjects = 1randomword*393706320830932217322
MSF_GET /search/instances: subjects == 1randomword3934040739425816259
MSF_GET /search/instances: subjects all 1randomword39347469112444218444
MSF_GET /search/instances: subjects all randomword AND title all randomword39336337612413619136
MSF_GET /search/instances: subjects all randomword NOT title all randomword393817716230240719409
MSF_GET /search/instances: subjects all randomword OR title all randomword393969619929867030673
MSF_GET /search/instances: subjects any 2random words393636012522838019381
MSF_GET /search/instances: title <> 3 word sentence393167167197207218138218
MSF_GET /search/instances: title == 3 word sentence393362913420021821218
MSF_GET /search/instances: title all *1randomword3933403340146027838927322769273
MSF_GET /search/instances: title all 1randomword*393948723027072222727
MSF_GET /search/instances: title all 3 word sentence393403113515318620186
MSF_GET /search/instances: title any 3 word sentence393408384149816111820391823
MSF_TC: mod search by auth query fs090000003932923289535523735377820403778
MSF_TC: mod search by boolean query fs0900000039328027455061610121121014
MSF_TC: mod search by contributors query fs09000000393583567998114916873921696
MSF_TC: mod search by filter query fs09000000393396377886106610801501080
MSF_TC: mod search by keyword query fs09000000393394378864974990151990
MSF_TC: mod search by subject query fs0900000039360358790394415783651583
MSF_TC: mod search by title query fs09000000393414940845985893010027261710027

...

transactionNumber Of SamplesAverageMedianpct90pct95pct99MinMax
MSF_GET /search/authorities keyword <> random sentence3682477487862114822141752400
MSF_GET /search/authorities keyword <> randomword3684462472850110824231662848
MSF_GET /search/authorities keyword = *random sentence*3682154515552153254843329414350
MSF_GET /search/authorities keyword = random sentence36822452526539932623192635
MSF_GET /search/authorities keyword = randomword36842342366089733428163451
MSF_GET /search/authorities keyword == random sentence36832252335918851783201792
MSF_GET /search/authorities keyword == randomword36832442526259653221163239
MSF_GET /search/authorities keyword all *randomword*3683119112061816211741185184139
MSF_GET /search/authorities keyword all random sentence36832432516319363322213341
MSF_GET /search/authorities keyword all randomword368626226666010352643172652
MSF_GET /search/authorities keyword any random sentence36832722796039022910202920
MSF_GET /search/authorities keyword any randomword36852322375929473309163332
MSF_GET /search/instances: contributors <> 2random words3679408418786107326851332702
MSF_GET /search/instances: contributors = *randomword3680441451844106429581622969
MSF_GET /search/instances: contributors = randomword*36802272345618823076143094
MSF_GET /search/instances: contributors == 2random words36792172265949022062142073
MSF_GET /search/instances: contributors all 2random words36772312396139523320143338
MSF_GET /search/instances: contributors all randomword36802322395929733142143157
MSF_GET /search/instances: contributors any 2random words36802442526229842020152030
MSF_GET /search/instances: keyword all random sentence AND languages == randomlang73542332376149013484193511
MSF_GET /search/instances: languages == (lang) AND items.status.name == ("Available" OR "In transit")735034635677210843477393501
MSF_GET /search/instances: languages == lang734934435079711143435383458
MSF_GET /search/instances: languages == lang AND items.status.name == "Available"735035336077510853426393449
MSF_GET /search/instances: subjects <> 1randomword367033825592611772866142880
MSF_GET /search/instances: subjects = (randomword OR randomword)36822472566099182879162896
MSF_GET /search/instances: subjects = *1randomword36726016101032136529392682940
MSF_GET /search/instances: subjects = 1randomword*36722352415898773489143509
MSF_GET /search/instances: subjects == 1randomword367023223859510042564152573
MSF_GET /search/instances: subjects all 1randomword36722412486358983062163082
MSF_GET /search/instances: subjects all randomword AND title all randomword36822372436209762919132935
MSF_GET /search/instances: subjects all randomword NOT title all randomword36812352425808532493162508
MSF_GET /search/instances: subjects all randomword OR title all randomword36822612706379982581262582
MSF_GET /search/instances: subjects any 2random words367025526464010312757152759
MSF_GET /search/instances: title <> 3 word sentence3670415424770108722841402295
MSF_GET /search/instances: title == 3 word sentence367023724463410732361182367
MSF_GET /search/instances: title all *1randomword36703984398857546226745122607453
MSF_GET /search/instances: title all 1randomword*36702642736789772829172839
MSF_GET /search/instances: title all 3 word sentence36702362436288913082183091
MSF_GET /search/instances: title any 3 word sentence3670653642197424835288365311
MSF_TC: mod search by auth query fs090000003682562757507399820610533221710551
MSF_TC: mod search by boolean query fs09000000368198010151870234142711074272
MSF_TC: mod search by contributors query fs090000003677199820693160375668814236898
MSF_TC: mod search by filter query fs090000003677126713102360281250261445043
MSF_TC: mod search by keyword query fs090000003672127313152334278564161426444
MSF_TC: mod search by subject query fs090000003670190018813226363759163915920
MSF_TC: mod search by title query fs090000003670578758518198911611512262111530

Resource Utilization

Memory Utilization

1 user - non-Eureka

1 user - Eureka

20 users - non-Eureka

20 users - Eureka

Service CPU Utilization

1 user - non-Eureka

1 user - Eureka

20 users - non-Eureka

20 users - Eureka

Instance CPU Utilization

1 user - non-Eureka

1 user - Eureka

20 users - non-Eureka

20 users - Eureka

RDS CPU Utilization

1 user - non-Eureka

1 user - Eureka

20 users - non-Eureka

20 users - Eureka

RDS Connections count

1 user - non-Eureka

1 user - Eureka

20 users - non-Eureka

20 users - Eureka

OpenSearch metrics


Additional information

...

...