Scaling and Sizing Guide

Size RTFS deployments with tier-based guidance on thread pools, batches, and autoscaling.

This guide provides sizing recommendations for RTFS deployments based on the number of Federated repositories, event volume, and member count.

Deployment Tiers

Small: Fewer Than 10 Federated Repositories

Suitable for teams getting started with Federation or running a limited number of synchronized repositories.

ResourceRecommended Value
RTFS replicas1
CPU requests and limits2 and 4
Memory requests and limits4Gi and 8Gi
Database2 vCPU, 4 GB RAM
Thread pool overridesNone (use defaults)

Medium: 10 to 100 Federated Repositories

Suitable for organizations with multiple teams and moderate artifact volume.

ResourceRecommended Value
RTFS replicas1 - 2
CPU requests and limits4 and 6
Memory requests and limits8Gi and 12Gi
Database4 vCPU, 8 GB RAM
Thread pool overridesConsider increasing rtfs.jobs.thread.pool.size and rtfs.tenant.thread.pool.size

Large: More Than 100 Federated Repositories

Suitable for large enterprises with high artifact volume and many Federation members.

ResourceRecommended Value
RTFS replicas2+ (with autoscaling)
CPU requests and limits4 and 6 (per replica)
Memory requests and limits8Gi and 12Gi (per replica)
Database8+ vCPU, 16+ GB RAM
Thread pool overridesIncrease thread pools proportionally (see the following section)

Thread Pool Sizing

Scale thread pools based on the number of Federated repositories and members.

PropertyDefaultWhen to IncreaseGuideline
rtfs.jobs.thread.pool.size100> 100 repos or high Full Sync frequencySet to 1.5x the number of federated repos
rtfs.tenant.thread.pool.size100Multi-tenant SaaS deploymentsScale with tenant count
rtfs.heartbeat.thread.pool.size100> 100 repos with many members eachScale with total member count across all repos
rtfs.tenant.heartbeat.thread.pool.size200Multi-tenant deploymentsScale with tenant count
rtfs.full.sync.thread.pool.size30Frequent Full Syncs or large reposIncrease to handle concurrent Full Syncs
rtfs.request.tunneling.thread.pool.size30Heavy use of cross-member operationsScale with tunneling request volume

Worker and Batch Sizing

The following properties control worker and batch sizing.

PropertyDefaultImpact of IncreasingImpact of Decreasing
rtfs.worker.batch.size100Higher throughput per worker cycle, more memory usageLower throughput, faster per-event response
rtfs.worker.max.events.processed.in.batch200More events per cycle for STANDARD priority reposLimits maximum batch size
rtfs.worker.max.events.processed.in.batch.for.high.priority400More events per cycle for HIGH or URGENT reposLimits maximum batch size for prioritized repos
rtfs.stream.allocation.size50More events loaded per stream readMore memory per stream

Priority Repository Limits

RTFS enforces limits on the number of repositories that can be set to HIGH or URGENT priority to prevent priority inflation.

PropertyDefaultDescription
rtfs.max.high.priority.repos.per.member10Maximum number of HIGH priority repos per member.
rtfs.max.high.priority.repos.percentage0.2 (20%)Maximum percentage of total repos that can be HIGH priority.

The effective limit is the lower of the two values.

Connection Pool Sizing

The following properties control connection pool sizing.

PropertyDefaultWhen to Increase
rtfs.reactive.http.client.max.connections50High concurrency across many members
federated.repo.max.total.http.connections50Many concurrent federation operations on Artifactory side

Binary Task Handler Sizing

The following properties control binary task handler sizing.

PropertyDefaultWhen to Increase
rtfs.binary.tasks.handler.tenants.thread.pool.size100High volume of binary transfers
rtfs.binary.tasks.handler.fetch.limit.per.tenant500Large backlog of pending binary tasks
rtfs.binary.tasks.inbound.insert.batch.size500Burst of new binary tasks during Full Sync

Kubernetes Autoscaling

RTFS supports Horizontal Pod Autoscaling when deployed via Helm:

autoscaling:
  enabled: true
  minReplicas: 1
  maxReplicas: 5
  targetCPU: "70"
  targetMemory: "80"

Monitoring for Sizing Decisions

Use these metrics to determine if scaling is needed.

MetricWhat It Tells YouAction If High
jfrtfs_worker_lagEvent processing is falling behindIncrease worker batch size or add replicas
jfrtfs_binary_tasks_counter (status=AVAILABLE)Binary tasks are queuing upIncrease binary task handler thread pool
jfrtfs_http_client_connections_pendingHTTP connections are exhaustedIncrease max connections
jfrtfs_http_client_connections_availableLow availability indicates saturationIncrease max connections or add replicas

Related Topics


Did this page help you?