OAI-PMH data harvesting [iris]


PERF-144 - Getting issue details... STATUS PERF-144 - Getting issue details... STATUS


PERF-144 - Getting issue details... STATUS





PERF-144 - Getting issue details... STATUS



Overview

The purpose of this test report is to highlight results from mod-oai-pmh harvesting tests. 

Test flow

Test consist of few calls:

Initial call:

  • /oai/records?verb=ListRecords&metadataPrefix=marc21_withholdings&apikey=[APIKey] - performing only once

Harvesting call:

  • /oai/records?verb=ListRecords&apikey=[APIKey]&resumptionToken=[resumptionToken] - performing cyclically until there is data in [tenant]_mod_oai_pmh.instances table to harvest.

[resumptionToken] returning in initial call response and in each harvesting call until there is something to harvest. When all data has being harvested - resumptionToken will not return with response.


Environment:

  • 61 back-end modules deployed in 110 ECS services
  • 3 okapi ECS services
  • 8 m5.large  EC2 instances
  • 2 db.r5.xlarge AWS RDS instance (1 reader, 1 writer)

Software version

mod-oai-pmh 3.4.2

Summary 

We're able to harvest all data set we have, which is 7.2 M records with different "Max records per response" parameter value.

Possibly there's a memory leak on oai-pmh side as we've seen continuously growing memory and CPU usage (see screenshots below).


Tests and results


testMax records per responseTime to completeResultIssues
11006 hours 26 minutesall data harvestedGrowing CPU/RAM usage
23002 hours 31 min5.5 M records harvestedconnection lost with load generator
not an oai-pmh issue
35002 hour 27 minall data harvestedGrowing CPU/RAM usage


Service CPU usage


Service Memory usage


Source-record-storage memory usage


Source-record-storage CPU usage




Source-record-manager memory usage


Source-record-manager CPU usage


mod-inventory-storage CPU usage



mod-inventory-storage memory usage



Heap Analysis

There's 2 issues as a leak suspects common for each heap dumps taken (after each test):

io.vertx.core.http.impl.HttpClientImpl:

There is growing instances number 7 347 → 13 248 → 20 664;




io.vertx.core.http.impl.ConnectionManager:

There is growing instances number 14 694 →26 514 → 41 328;