Articles in this section

Optimizing Resource Allocation and Scaling Strategy for Bold Reports

Published:
Updated:

This article provides guidance on resource allocation and scaling strategies for deploying Bold Reports. The recommendations are based on load testing and analysis to help ensure efficient performance across different levels of user concurrency.

Key Insights from Load Testing

Load Test Scenario

The load testing simulated user activity over a 10-minute loop, during which users logged in to Bold Reports and navigated through key functional pages such as:

  • Data Source Page
  • Reports Listing Page
  • Reports Viewing Page

The analysis identified resource utilization patterns and scaling requirements across different concurrency levels to support optimal system performance.

Scaling Observations

  1. Reports Viewer: This is the most resource-intensive service, requiring up to 50 replicas to handle 1000 concurrent users effectively. Ensure sufficient node capacity is available to support this scaling requirement.
  2. IDP Web and Reports Web: These services require moderate scaling as user concurrency increases to efficiently manage front-end traffic.

Resource Recommendations by User Concurrency Levels

The following sections provide recommended CPU, memory, and pod replica configurations based on concurrency levels observed during load testing.

For 10 concurrent users

Deployment Requested CPU Requested Memory Required Pod Replicas
id-web 500m 1 GB 1
ums-web 250m 512 Mi 1
id-api 250m 512 Mi 1
reports-api 250m 512 Mi 1
reports-jobs 250m 512 Mi 1
reports-viewer 1 4 GB 1
reports-web 1 4 GB 1
Report service 250m 750 Mi 1
bold-etl 250m 512 Mi 1

For 50 concurrent users

Deployment Requested CPU Requested Memory Required Pod Replicas
id-web 500m 2 GB 1
ums-web 250m 750 Mi 1
id-api 250m 750 Mi 1
reports-api 250m 750 Mi 1
reports-jobs 250m 750 Mi 1
reports-viewer 1 4 GB 3
reports-web 1 4 GB 1
Report service 250m 750 Mi 1
bold-etl 250m 750 Mi 1

For 100 concurrent users

Deployment Requested CPU Requested Memory Required Pod Replicas
id-web 500m 2 GB 1
ums-web 250m 750 Mi 1
id-api 250m 750 Mi 1
reports-api 250m 750 Mi 1
reports-jobs 250m 750 Mi 1
reports-viewer 1 4 GB 5
reports-web 1 4 GB 1
Report service 250m 750 Mi 1
bold-etl 250m 750 Mi 1

For 200 concurrent users

Deployment Requested CPU Requested Memory Required Pod Replicas
id-web 500m 2 GB 1
ums-web 250m 750 Mi 1
id-api 250m 750 Mi 1
reports-api 250m 750 Mi 1
reports-jobs 250m 750 Mi 1
reports-viewer 1 4 GB 10
reports-web 1 4 GB 1
Report service 250m 750 Mi 1
bold-etl 250m 750 Mi 1

For 300 concurrent users

Deployment Requested CPU Requested Memory Required Pod Replicas
id-web 500m 2 GB 2
ums-web 250m 750 Mi 1
id-api 250m 750 Mi 1
reports-api 250m 750 Mi 1
reports-jobs 250m 750 Mi 1
reports-viewer 1 4 GB 15
reports-web 1 4 GB 2
Report service 250m 750 Mi 1
bold-etl 250m 750 Mi 1

For 400 concurrent users

Deployment Requested CPU Requested Memory Required Pod Replicas
id-web 500m 2 GB 2
ums-web 250m 750 Mi 1
id-api 250m 750 Mi 1
reports-api 250m 750 Mi 1
reports-jobs 250m 750 Mi 1
reports-viewer 1 4 GB 20
reports-web 1 4 GB 3
Report service 250m 750 Mi 1
bold-etl 250m 750 Mi 1

For 1000 concurrent users

Deployment Requested CPU Requested Memory Required Pod Replicas
id-web 500m 2 GB 4
ums-web 250m 750 Mi 1
id-api 250m 750 Mi 1
reports-api 250m 750 Mi 1
reports-jobs 250m 750 Mi 1
reports-viewer 1 4 GB 50
reports-web 1 4 GB 6
Report service 250m 750 Mi 1
bold-etl 250m 750 Mi 1

Note: The resource values in this article were observed during load testing with a specific test dataset. Actual memory usage depends heavily on the volume of data each report processes. Memory consumption increases with:

  • The number of rows (records) returned by the report’s datasets.
  • The number of columns, groups, aggregates, and charts in the report.
  • Exporting large reports (for example, to Excel or PDF) and scheduled report exports.
  • Many users viewing data-heavy reports at the same time.

If your reports work with high data volumes, increase the memory allocated to the reports-viewer pods (and reports-jobs if you schedule or export large reports) beyond the values listed here. Monitor pod memory usage, and raise the memory request and limit if you see slow rendering, restarts, or pods ending with an OOMKilled status.

See Also

Was this article useful?
Like
Dislike
Help us improve this page
Please provide feedback or comments
Comments (0)
Access denied
Access denied