PropertyDamage.Nemesis.ResourceExhaustion (PropertyDamage v0.2.0)

View Source

Exhaust system resources to test resilience.

Consumes various system resources (file descriptors, ports, ETS tables, atoms) to test how the system behaves under resource pressure.

Configuration

  • :resource - What to exhaust: :file_descriptors, :ports, :ets_tables, :processes
  • :count - How many resources to consume (default varies by type)
  • :duration_ms - How long to hold resources (default: 5000ms)

Warning

This operation actually exhausts system resources. Use with caution:

  • :file_descriptors - Opens files, may hit ulimit
  • :ports - Opens ports, consumes system resources
  • :ets_tables - Creates ETS tables, consumes memory
  • :processes - Spawns processes, may hit process limit

Example

def commands do
  [
    {OpenConnection, weight: 5},
    {PropertyDamage.Nemesis.ResourceExhaustion, weight: 1}
  ]
end

Testing Behavior

Under resource exhaustion, your system should:

  • Handle resource allocation failures
  • Clean up resources appropriately
  • Degrade gracefully when limits are reached