summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2011-10-27 11:48:01 +0100
committerEmile Joubert <emile@rabbitmq.com>2011-10-27 11:48:01 +0100
commit13bc32fa5742635d772f70efdbbe9104450fe584 (patch)
tree1b1295bb3758fdda65bfa60b75830492aed5e97c
parentc24c1f5166efd526116f8713759c1bb50a89c180 (diff)
downloadrabbitmq-server-13bc32fa5742635d772f70efdbbe9104450fe584.tar.gz
Change the meaning of vm_memory_high_watermark = 0.0
Setting vm_memory_high_watermark to zero disabled memory monitoring. Now we treat 0.0 as a normal percentage, which guarantees that the memory alarm will always be triggered, making it impossible to publish.
-rw-r--r--src/rabbit_alarm.erl6
-rw-r--r--src/rabbit_memory_monitor.erl21
2 files changed, 14 insertions, 13 deletions
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl
index d38ecb91..fd03ca85 100644
--- a/src/rabbit_alarm.erl
+++ b/src/rabbit_alarm.erl
@@ -45,11 +45,7 @@
start() ->
ok = alarm_handler:add_alarm_handler(?MODULE, []),
{ok, MemoryWatermark} = application:get_env(vm_memory_high_watermark),
- ok = case MemoryWatermark == 0 of
- true -> ok;
- false -> rabbit_sup:start_restartable_child(vm_memory_monitor,
- [MemoryWatermark])
- end,
+ rabbit_sup:start_restartable_child(vm_memory_monitor, [MemoryWatermark]),
ok.
stop() ->
diff --git a/src/rabbit_memory_monitor.erl b/src/rabbit_memory_monitor.erl
index 3deb9580..9cfc1583 100644
--- a/src/rabbit_memory_monitor.erl
+++ b/src/rabbit_memory_monitor.erl
@@ -211,17 +211,22 @@ internal_update(State = #state { queue_durations = Durations,
queue_duration_sum = Sum,
queue_duration_count = Count }) ->
MemoryLimit = ?MEMORY_LIMIT_SCALING * vm_memory_monitor:get_memory_limit(),
- MemoryRatio = erlang:memory(total) / MemoryLimit,
DesiredDurationAvg1 =
- case MemoryRatio < ?LIMIT_THRESHOLD orelse Count == 0 of
+ case MemoryLimit > 0.0 of
true ->
- infinity;
+ MemoryRatio = erlang:memory(total) / MemoryLimit,
+ case MemoryRatio < ?LIMIT_THRESHOLD orelse Count == 0 of
+ true ->
+ infinity;
+ false ->
+ Sum1 = case MemoryRatio < ?SUM_INC_THRESHOLD of
+ true -> Sum + ?SUM_INC_AMOUNT;
+ false -> Sum
+ end,
+ (Sum1 / Count) / MemoryRatio
+ end;
false ->
- Sum1 = case MemoryRatio < ?SUM_INC_THRESHOLD of
- true -> Sum + ?SUM_INC_AMOUNT;
- false -> Sum
- end,
- (Sum1 / Count) / MemoryRatio
+ 0.0
end,
State1 = State #state { desired_duration = DesiredDurationAvg1 },