sregulator_underload_meter (sbroker v1.1.1)
Sets an alarm when the regulator's valve is slow to get a match for an interval.
sregulator_underload_meter
can be used in as a sbroker_meter
in a sregulator
. It will set a SASL alarm_handler
alarm when the regulator's valve is slow to get a match for an interval and clear it once the valve gets matches fast for an interval. Its argument, spec()
, is of the form: #{alarm => Alarm :: any(), % default: {underload, self()}
target => Target :: 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 {underload, self()}
). Target
is the target relative time for the valve to get a match (defaults to 100
). Interval
is the interval in milliseconds (defaults to 1000
) that the valve 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 {valve_slow, self()}
.
sregulator
because a sregulator_valve
will remain open when processes that should be available are not sending requests and can not do anything to correct this. Whereas a sbroker
can not distinguish between one queue receiving too many requests or the other too few. In either situation the congested sbroker_queue
would drop requests to correct the imbalance, causing a congestion alarm to be cleared very quickly.
Link to this section Summary
Link to this section Types
Link to this type
spec/0
Specs
spec() :: #{alarm => Alarm :: any(), target => Target :: integer(), interval => Interval :: pos_integer()}.