Skip to content

Add configurable check parallelism control #25

@pgagnidze

Description

@pgagnidze

Currently, updo creates one goroutine per target for concurrent monitoring. While this works well for typical usage, it can be problematic for deployments with hundreds of targets or in resource-constrained environments.

Current behavior

  • One goroutine per target (unlimited parallelism)
  • All targets checked simultaneously
  • No control over concurrent request limits

Use cases for parallelism control

  • High-scale deployments: Monitoring hundreds of targets may overwhelm networks or hit rate limits
  • Resource-constrained environments: Containers with limited CPU/memory need bounded concurrency
  • Rate limiting compliance: Some services require limiting concurrent requests
  • Network bandwidth management: Controlling simultaneous outbound connections

Proposed implementation

Add --parallelism N flag and config option:

  • Limit concurrent HTTP requests to N
  • Maintain individual target timing schedules
  • Default to unlimited (current behavior) for backward compatibility

Technical approach

Replace current per-target goroutines with a worker pool pattern that limits concurrent HTTP requests while maintaining individual target timing schedules.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions