Module sbroker_overload_meter

Sets an alarm when the process's message queue is slow for an interval.

Behaviours: sbroker_meter.

Description

Sets an alarm when the process's message queue is slow for an interval.

sbroker_overload_meter can be used as a sbroker_meter in a sbroker or a sregulator. It will set a SASL alarm_handler alarm when the process's message queue is slow for an interval and clear it once the message queue becomes fast for an interval. Its argument, spec(), is of the form:
  #{alarm    => Alarm :: any(), % default: {overload, self()}
    target   => Target :: non_neg_integer(), % default: 100
    interval => Interval :: pos_integer()}. % default: 1000

Alarm is the alarm_handler alarm that will be set/cleared by the meter (defaults to {overload, self()}). Target is the target sojourn time of the message queue in milliseconds (defaults to 100). Interval is the interval in milliseconds (defaults to 1000) that the message queue must be above the target for the alarm to be set and below the target for the alarm to be cleared. The description of the alarm is {message_queue_slow, self()}.

This meter detects when the process is receiving more requests than it can handle and not whether a sbroker_queue is congested. If a sbroker_queue becomes congested it will drop requests to clear the congestion, causing a congestion alarm (if one existed) to be cleared very quickly.

Data Types

spec()

spec() = #{alarm => Alarm::any(), target => Target::non_neg_integer(), interval => Interval::pos_integer()}


Generated by EDoc