PTF - Performance testing of Export All Endpoint (Quesnelia) [non-ECS]

Overview

  • This document contains results of testing Data Export All by the endpoint (POST data-export/export-all) with Default instances, authority, export holdings job profiles and with the custom profile Example 1 on the Quesnelia [non-ECS] release on qcp1 environment

PERF-890 - Getting issue details... STATUS  

Summary

  • Data Export tests finished successfully on qcp1 environment using the Default instances, authority, holdings export job profile and Custom Mapping Profiles - Example 1.
  • During the tests data-export-all with Custom Mapping Profiles - Example 1 we observe Errors converting json to marc for instances with 9 and more holdings, task for investigation was created  MDEXP-780 - Getting issue details... STATUS
  • Two very slow queries when checking deleted records in tables mod_inventory_storage.audit_instance and mod_inventory_storage.audit_holdings_record for Data-Export-All, task for investigation was created  MODINVSTOR-1234 - Getting issue details... STATUS
  • No memory leaks are observed.
  • The data export duration for default profiles and the duration for the concurrent test of default profiles plus the export of 10,000 instances with a custom profile are the same. This is because Data-Export-All uses one data-export module task, so if we run concurrent tests, each job will be executed on a separate data-export module task, because data-export module has two tasks.

Test Runs and Results

This table contains durations for Data Export. 

Test #Job ProfileCount of exported records

Data Export Duration
(hh:mm:ss)

Results
1Default instances export job profile196645063:03:59COMPLETED
Custom Mapping Profiles - Example 1100000:11:14
2Default authority export job profile61865173:29:03COMPLETED
Custom Mapping Profiles - Example 1100000:01:49
3Default holdings export job profile206692351:46:56COMPLETED
Custom Mapping Profiles - Example 1100000:01:22
4Default instances export job profile197895082:34:09COMPLETED
5Default holdings export job profile207942261:46:16COMPLETED
6Default authority export job profile61865173:28:51COMPLETED
7Custom Mapping Profiles - Example 1197895035:51:08COMPLETED_WITH_ERRORS



Resource utilization for Test №1, №2 and №3

 Resource utilization table
Service NameCPUService NameRAM
mod-data-export-b143%mod-data-export-b106%
mod-inventory-b12%mod-source-record-manager-b53%
mod-source-record-manager-b1.90%mod-source-record-storage-b51%
mod-source-record-storage-b1.40%okapi-b47%
okapi-b0.80%mod-users-bl-b43%
mod-authtoken-b0.60%mod-inventory-b26%
mod-users-bl-b0.50%mod-authtoken-b26%
mod-inventory-storage-b0.30%mod-inventory-storage-b17%
nginx-okapi0.10%pub-okapi4.70%
pub-okapi0.00%nginx-okapi4.60%

Service CPU Utilization

Here we can see that mod-data-export used 150% CPU.

Service Memory Utilization

Here we can see that data-export module used 95% memory.


Kafka metrics



DB CPU Utilization

DB CPU was 90%.

DB Connections

Max number of DB connections was 750

DB load

                                                                                                                     

Top SQL-queries


#TOP 5 SQL statements
1
SELECT id, content, external_id, record_type, state, leader_record_status, suppress_discovery FROM v_authority_all WHERE external_id BETWEEN $1 AND $2 ORDER BY id ASC offset $3 rows fetch next $4 rows only
2
select ie1_0.id,ie1_0.jsonb from v_instance ie1_0 where ie1_0.id in ($1...)
3
SELECT * FROM v_marc_instance_all_non_deleted_non_suppressed WHERE external_id BETWEEN $1 AND $2 ORDER BY id ASC offset $3 rows fetch next $4 rows only
4
SELECT * FROM v_folio_instance_all_non_deleted_non_suppressed WHERE id BETWEEN $1 AND $2 ORDER BY id ASC fetch first $3 rows only
5
SELECT * FROM v_marc_instance_all_non_deleted_non_suppressed WHERE external_id BETWEEN $1 AND $2 ORDER BY id ASC fetch first $3 rows only

Resource utilization for Test №4, №5 and №6

 Resource utilization table
Service NameCPUService NameRAM
mod-data-export-b177%mod-data-export-b103%
mod-inventory-b12%mod-source-record-manager-b52%
mod-source-record-manager-b1.80%mod-inventory-b48%
mod-source-record-storage-b1.40%okapi-b38%
okapi-b1.00%mod-source-record-storage-b31%
mod-authtoken-b0.80%mod-users-bl-b31%
mod-users-bl-b0.50%mod-authtoken-b26%
mod-inventory-storage-b0.30%mod-inventory-storage-b17%
nginx-okapi0.20%nginx-okapi4.70%
pub-okapi0.10%pub-okapi4.40%

Service CPU Utilization

Here we can see that mod-data-export used 194% CPU.

Service Memory Utilization

Here we can see that all modules show a stable trend except mod-source-record-manager.


Kafka metrics



DB CPU Utilization

DB CPU was 92%.

DB Connections