mod-inventory performance testing
Jun 24, 2019
https://folio-org.atlassian.net/browse/MODDATAIMP-115https://folio-org.atlassian.net/browse/MODDATAIMP-137
Server Environment AWS t2.2xlarge Instance (8 CPUs, 32GB of RAM, up to 3.0 GHz Intel Scalable Processor) Resource POST http://folio-snapshot-latest.aws.indexdata.com/inventory/instances Request body {
"hrid" : "in00000999",
"source" : "MARC",
"title" : "Futures, biometrics and neuroscience research Luiz Moutinho, Mladen Sokele, editors",
"alternativeTitles" : [ ],
"editions" : [ ],
"series" : [ "Innovative research methodologies in management / Luiz Moutinho, Mladen Sokele ; Volume 2", "Innovative research methodologies in management Volume 2" ],
"identifiers" : [ {
"identifierTypeId" : "5d164f4b-0b15-4e42-ae75-cfcf85318ad9",
"value" : "101073931X"
}, {
"identifierTypeId" : "8261054f-be78-422d-bd51-4ed9f33c3422",
"value" : "3319643991"
}, {
"identifierTypeId" : "8261054f-be78-422d-bd51-4ed9f33c3422",
"value" : "9783319643991"
}, {
"identifierTypeId" : "8261054f-be78-422d-bd51-4ed9f33c3422",
"value" : "9783319644004"
}, {
"identifierTypeId" : "7e591197-f335-4afb-bc6d-a6d76ca3bace",
"value" : "(OCoLC)ocn992783736"
}, {
"identifierTypeId" : "7e591197-f335-4afb-bc6d-a6d76ca3bace",
"value" : "(OCoLC)992783736"
}, {
"identifierTypeId" : "7e591197-f335-4afb-bc6d-a6d76ca3bace",
"value" : "(DE-599)GBV101073931X"
} ],
"contributors" : [ {
"contributorNameTypeId" : "2b94c631-fca9-4892-a730-03ee529ffe2a",
"name" : "Moutinho, Luiz",
"contributorTypeId" : null,
"contributorTypeText" : null
}, {
"contributorNameTypeId" : "2b94c631-fca9-4892-a730-03ee529ffe2a",
"name" : "Sokele, Mladen",
"contributorTypeId" : null,
"contributorTypeText" : null
} ],
"subjects" : [ "Betriebswirtschaftslehre", "Management", "Wissenschaftliche Methode" ],
"classifications" : [ ],
"publication" : [ {
"publisher" : "Palgrave Macmillan",
"place" : "Cham",
"dateOfPublication" : "[2018]",
"role" : null
} ],
"publicationFrequency" : [ ],
"publicationRange" : [ ],
"electronicAccess" : [ {
"uri" : "http://www.gbv.de/dms/zbw/101073931X.pdf",
"linkText" : "Electronic resource (PDF)",
"materialsSpecification" : null,
"publicNote" : "Address for accessing the table of content. PDF file",
"relationshipId" : null
} ],
"instanceTypeId" : "a2c91e87-6bab-44d6-8adb-1fd02481fc4f",
"instanceFormatIds" : [ ],
"physicalDescriptions" : [ "xxix, 224 Seiten Illustrationen" ],
"languages" : [ "eng" ],
"statisticalCodeIds" : [ ]
} Request headers content-type: application/json
x-okapi-tenant: diku
x-okapi-token: [token] Request client The tool we used to send requests is JMeter tool with preconfigured thread group. We were changing the "Number of threads" property for different test cases (1,2,4,8,16). Each thread will execute the test plan in its entirety and completely independently of other test threads. Each thread simulates a real user requesting to the server under a test. Multiple threads are used to simulate concurrent connections to server application. JMeter tool is configured on separate local Windows machine: Intel core i7, 16GB RAM. Keep in mind that mod-inventory calls mod-inventory-storage to save an incoming Instance. In it's turn, the mod-inventory-storage does SQL insert query.
And yes, multi-threading is bandaid in this case, and we created specific Jira tickets to receive a batch of Instances in one request ().
If you would need more details about test plan, here is it
Test case start time 05:31:46.918 Test case end time 07:54:06.257 Test case duration 2h 23mins Average Response time 304 ms Average sending capacity = 28000 / Test case duration 3.2 Instances per 1 second
Test case start time 20:56:34.592 Test case end time 22:12:31.183 Test case duration 1h 14mins Average Response time 344ms Average sending capacity = 28000 / Test case duration 6.3 Instances per 1 second
Test case start time 22:32:34.119 Test case end time 23:09:31.770 Test case duration 37mins Average Response time 317ms Average sending capacity = 28000 / Test case duration 12.6 Instances per 1 second
Test case start time 10:40:46.639 Test case end time 11:00:11.094 Test case duration 20mins Average Response time 329ms Average sending capacity = 28000 / Test case duration 23.3 Instances per 1 second
Test case start time 11:17:07.248 Test case end time 11:29:21.007 Test case duration 12mins Average Response time 415ms Average sending capacity = 28000 / Test case duration 38.8 Instances per 1 second
I have some general hardware questions about the environment used in the testing:
1.) Is the server hosting this Folio instance also hosting the database? Or is the database on a separate host?
2.) Why was the Amazon Large 8 CPU Instance chosen? Was it to satisfy all of the requests that were threaded in? Or is this simply a “reference” system - and recommended that any single host running Folio and a database be equipped?
3.) I am curious to see what the performance is like during loading when the Folio app, and the databases are on different hosts - as this likely will represent more of a “real-world” configuration. Are there any plans for testing on that type of configuration?
Thank you for all of the metrics! This is good stuff.