CallMeter Docs

Capacity and Scaling

Plan worker capacity, understand license tiers, allocate resources per endpoint, scale horizontally with multiple workers, and monitor utilization.

Worker capacity determines how many concurrent SIP endpoints can run on a single worker. Getting capacity right is essential --- under-provision and tests will fail to start, over-provision and you waste resources.

This guide covers everything from understanding what capacity means, through license tiers and resource planning, to scaling from 50 to thousands of concurrent endpoints.

What Capacity Means

Capacity is the maximum number of concurrent SIP endpoints a single worker can handle. Each endpoint represents one SIP registration and one active call, including SIP signaling, RTP media transmission, and metric collection.

When you create a worker in CallMeter, you set its capacity. During test execution, the scheduler allocates endpoints to workers that have available capacity. If a worker has capacity 100 and 65 endpoints are currently active, it can accept 35 more.

Effective Capacity

The actual number of endpoints a worker can handle is the lower of two limits:

Effective Capacity = MIN(Configured Capacity, Licensed Endpoints)
  • Configured capacity --- The capacity value you set when creating the worker, based on the host machine's resources
  • Licensed endpoints --- The maximum endpoints allowed by your worker license tier

If you set capacity to 200 on a Standard license (50 endpoints), the effective capacity is 50. You can increase the configured capacity, but the license gate limits actual usage.

Worker License Tiers

User-owned workers require a worker license. Each license tier determines the maximum endpoints per worker and the features available.

LicenseMonthly PriceMax Endpoints per WorkerFeatures
Standard$299/mo50Basic metrics, SIP message capture
Professional$599/mo200All metrics, webhooks, API access, priority support
Enterprise$999/moUnlimitedAll features, dedicated support, custom integrations

License Is Per Worker

Each worker requires its own license. If you deploy three workers, you need three licenses. The license tier determines the per-worker endpoint limit, not a total across all workers.

What Each Tier Includes

Standard ($299/mo, 50 endpoints):

  • Full SIP signaling (all transport protocols)
  • All audio codecs (PCMA, PCMU, G.722, Opus)
  • All video codecs (H.264, VP8)
  • Core VoIP quality metrics (jitter, packet loss, RTT, SIP timing, and more)
  • SIP message capture and analysis
  • Health monitoring and status reporting

Professional ($599/mo, 200 endpoints):

  • Everything in Standard
  • Extended metrics (60+ VoIP quality indicators)
  • Webhook notifications for test events
  • API access for programmatic test execution
  • Priority support response times

Enterprise ($999/mo, unlimited endpoints):

  • Everything in Professional
  • No per-worker endpoint limit (limited only by hardware)
  • Custom media file formats
  • Dedicated support engineer
  • Custom integration assistance
  • SLA guarantees

Choosing the Right Tier

Testing NeedRecommended Tier
Small-scale validation (5-50 endpoints)Standard
Regular load testing (50-200 endpoints)Professional
Stress testing (200+ endpoints per worker)Enterprise
Compliance testing with moderate loadStandard or Professional
Continuous monitoring probes (low concurrency)Standard
CI/CD integration with API accessProfessional

Resource Requirements

Each concurrent endpoint consumes CPU, memory, and network resources. Use these guidelines to size your Docker host.

Audio-Only Calls

Concurrent EndpointsCPU CoresMemoryNetwork (bidirectional)
101256 MB2 Mbps
251512 MB5 Mbps
5021 GB10 Mbps
1002-42 GB20 Mbps
20044 GB40 Mbps
50088 GB100 Mbps
1,0001616 GB200 Mbps

Audio + Video Calls

Video significantly increases resource requirements. H.264 at 720p is the most demanding:

Concurrent EndpointsCPU CoresMemoryNetwork (bidirectional)
1021 GB35 Mbps
2542 GB85 Mbps
5084 GB170 Mbps
100168 GB340 Mbps
2003216 GB680 Mbps

Video Tests Are Resource-Intensive

Video encoding and decoding consume substantially more CPU than audio. A single H.264 720p video stream at 30 FPS can use 0.15-0.3 CPU cores. Plan accordingly and consider using lower resolutions (360p, 480p) for stress tests where visual quality is not the primary measurement.

Per-Endpoint Resource Estimates

ResourceAudio OnlyAudio + Video (720p)
CPU~0.015 cores~0.15 cores
Memory~10 MB~40 MB
Network (per direction)~90 Kbps (G.711)~1.6 Mbps (H.264 720p)
RTP ports2 (audio RTP + RTCP)4 (audio + video, each RTP + RTCP)

These are approximate values under normal conditions. Actual usage varies based on codec, bitrate settings, media file complexity, and SIP server behavior.

Multi-Worker Deployment

A single worker has hardware limits. To test beyond those limits, deploy multiple workers and distribute endpoints across them.

Why Multiple Workers

  • Scale beyond single-machine limits --- 1,000 endpoints across 4 workers is more practical than 1,000 on one machine
  • Geographic distribution --- Place workers in different locations to test from multiple points of presence
  • Fault isolation --- If one worker fails, others continue operating
  • Incremental growth --- Add workers as testing needs increase

Horizontal Scaling Patterns

Pattern 1: Scale on a single host

Deploy multiple worker containers on one powerful machine:

version: "3.8"
services:
  worker-1:
    image: registry.callmeter.io/worker:latest
    environment:
      WORKER_TOKEN: "${TOKEN_1}"
      CLOUD_URL: "wg.callmeter.io:443"
      WORKER_NAME: "host-a-worker-1"
    ports:
      - "3031:3030"
    deploy:
      resources:
        limits:
          cpus: "4.0"
          memory: 4G

  worker-2:
    image: registry.callmeter.io/worker:latest
    environment:
      WORKER_TOKEN: "${TOKEN_2}"
      CLOUD_URL: "wg.callmeter.io:443"
      WORKER_NAME: "host-a-worker-2"
    ports:
      - "3032:3030"
    deploy:
      resources:
        limits:
          cpus: "4.0"
          memory: 4G

Divide the host's resources between workers. Two workers with 100-endpoint capacity each give you 200 endpoints total.

Pattern 2: Scale across hosts

Deploy one worker per host across multiple machines:

Host A (Frankfurt)    → worker-fra-01 (200 endpoints)
Host B (New York)     → worker-nyc-01 (200 endpoints)
Host C (Singapore)    → worker-sgp-01 (200 endpoints)
                                    Total: 600 endpoints

This pattern provides both scale and geographic distribution. Each worker connects independently to wg.callmeter.io:443.

Pattern 3: Mixed cloud and user-owned

Combine cloud workers for internet-facing tests with user-owned workers for private infrastructure tests. In a single test, different groups can target different workers:

  • Group A: 100 endpoints on cloud workers (testing external SIP trunk)
  • Group B: 100 endpoints on your worker (testing internal PBX)

Load Distribution Across Workers

When you create a test and select multiple workers, CallMeter distributes endpoints across them based on available capacity:

  1. The scheduler examines each selected worker's available capacity (configured capacity minus currently used)
  2. Endpoints are allocated proportionally to available capacity
  3. If total available capacity across selected workers is insufficient, the test fails to start with a capacity error

You can also target specific workers by selecting them explicitly in the test's group configuration.

Capacity Monitoring

From the CallMeter Dashboard

The Workers page shows real-time capacity information for each worker:

ColumnDescription
CapacityConfigured maximum endpoints
UsedEndpoints currently allocated to active tests
AvailableRemaining capacity (Capacity - Used)
StatusWorker connection status
Last HeartbeatTime since last health check

From the Worker Host

Monitor resource utilization to determine if the configured capacity matches actual resource consumption:

# Container resource usage
docker stats callmeter-worker

# Health endpoint
curl -s http://localhost:3030/health | jq .

Capacity Alerts

Watch for these warning signs:

IndicatorAction
CPU consistently above 80% during testsReduce capacity or add another worker
Memory usage near container limitIncrease memory limit or reduce capacity
Tests queuing because no capacity availableAdd more workers
Frequent OOM kills (docker inspect shows OOMKilled: true)Increase memory limit significantly
Network saturation (dropped packets)Reduce endpoint count or upgrade network

Scaling Example: From 50 to 1,000 Endpoints

Here is a concrete example of scaling a CallMeter deployment for a growing testing program.

Phase 1: Getting Started (50 endpoints)

Setup: 1 worker, Standard license ($299/mo) Hardware: 2 CPU cores, 1 GB RAM, 25 Mbps network Use case: Basic SIP registration testing, audio quality validation

# Single worker, modest capacity
services:
  callmeter-worker:
    image: registry.callmeter.io/worker:latest
    environment:
      WORKER_TOKEN: "${WORKER_TOKEN}"
      CLOUD_URL: "wg.callmeter.io:443"
      WORKER_NAME: "lab-worker"
    deploy:
      resources:
        limits:
          cpus: "2.0"
          memory: 1G

Monthly cost: $299 (1 Standard license)

Phase 2: Regular Load Testing (200 endpoints)

Setup: 1 worker, Professional license ($599/mo) Hardware: 4 CPU cores, 4 GB RAM, 50 Mbps network Use case: Weekly load tests, CI/CD integration, webhook alerts

services:
  callmeter-worker:
    image: registry.callmeter.io/worker:latest
    environment:
      WORKER_TOKEN: "${WORKER_TOKEN}"
      CLOUD_URL: "wg.callmeter.io:443"
      WORKER_NAME: "loadtest-worker"
    deploy:
      resources:
        limits:
          cpus: "4.0"
          memory: 4G

Monthly cost: $599 (1 Professional license)

Phase 3: Multi-Site Testing (500 endpoints)

Setup: 3 workers across locations, mix of Professional and Enterprise Hardware: Varies by location

WorkerLocationLicenseCapacityHardware
dc-fra-01FrankfurtEnterprise2004 cores, 4 GB
dc-nyc-01New YorkProfessional2004 cores, 4 GB
office-labOfficeStandard502 cores, 1 GB

Monthly cost: $999 + $599 + $299 = $1,897

Phase 4: Enterprise Scale (1,000 endpoints)

Setup: 5 Enterprise workers, centralized management Hardware: Dedicated servers or cloud VMs

WorkerLocationCapacityHardware
dc-fra-01Frankfurt2508 cores, 8 GB
dc-fra-02Frankfurt2508 cores, 8 GB
dc-nyc-01New York2004 cores, 4 GB
dc-sgp-01Singapore2004 cores, 4 GB
dc-lon-01London1004 cores, 4 GB

Monthly cost: 5 x $999 = $4,995

Enterprise Volume Discounts

For deployments of 5 or more Enterprise workers, contact sales@callmeter.io for volume pricing. Enterprise agreements can include custom endpoint limits, dedicated support, and tailored SLA terms.

Capacity Planning Best Practices

  1. Start conservative --- Set capacity lower than theoretical maximum and increase based on observed resource usage during actual tests.

  2. Account for video --- A single video endpoint uses 10x the resources of an audio-only endpoint. If your test plan includes video, reduce the endpoint count accordingly.

  3. Leave headroom --- Do not configure capacity at 100% of hardware capability. Leave 20-30% headroom for operating system overhead, metric processing, and burst handling.

  4. Monitor before scaling --- Before adding workers, check if existing workers are actually resource-constrained. If CPU and memory are well below limits, you may be able to increase capacity on existing workers.

  5. Use dedicated hardware for stress tests --- Shared VMs or containers competing for resources produce inconsistent results. For reliable stress testing, use dedicated hosts.

  6. Plan for peak usage --- Size for your maximum concurrent test load, not average. If you run weekly 500-endpoint stress tests but daily 50-endpoint validation tests, size for 500.

  7. Test your capacity --- Run a calibration test at maximum capacity and monitor host resources. If the system is stressed, reduce capacity or upgrade hardware before running production tests.

Next Steps

On this page