StarvationProtection.MaxReads

Limits consecutive reads per connection before switching to another session.

This parameter applies to imtcp: TCP Syslog Input Module.

Name:

StarvationProtection.MaxReads

Scope:

module

Type:

integer

Default:

module=500

Required?:

no

Introduced:

8.2504.0

Description

The StarvationProtection.MaxReads parameter defines the maximum number of consecutive requests a worker can process for a single connection before switching to another session. This mechanism prevents any single sender from monopolizing imtcp’s processing capacity.

Default value: 500

Allowed values:

  • 0 → Disables starvation protection (a single sender may dominate worker time).

  • Any positive integer → Specifies the maximum number of consecutive reads before switching.

Behavior and Use Cases

  • When a connection continuously sends data, a worker will process it up to MaxReads times before returning it to the processing queue.

  • This ensures that other active connections get a chance to be processed.

  • Particularly useful in high-volume environments where a few senders might otherwise consume all resources.

  • In single-threaded mode, this still provides fairness but cannot fully prevent resource exhaustion.

Scope and Overrides

  • This is a module-level parameter, meaning it sets the default for all imtcp listeners.

  • Each listener instance can override this by setting the starvationProtection.maxReads listener parameter.

Example Configuration

The following sets a default of 300 reads per session before switching to another connection, while overriding it to 1000 for a specific listener:

module(load="imtcp" StarvationProtection.MaxReads="300")  # Default for all listeners

input(type="imtcp" port="514" starvationProtection.MaxReads="1000")  # Overrides default

If StarvationProtection.MaxReads is not explicitly set, the default of 500 will be used.

Module usage

module(load="imtcp" starvationProtection.maxReads="300")

See also

See also imtcp: TCP Syslog Input Module.


Support: rsyslog Assistant | GitHub Discussions | GitHub Issues: rsyslog source project

Contributing: Source & docs: rsyslog source project

© 2008–2025 Rainer Gerhards and others. Licensed under the Apache License 2.0.