feat(limiter): lift the log level of rate limiter to `warning`

This commit is contained in:
firest 2024-05-10 15:34:11 +08:00
parent 23a1b18459
commit 1fefb421bc
3 changed files with 54 additions and 25 deletions

View File

@ -1013,17 +1013,24 @@ check_limiter(
Data, Data,
WhenOk, WhenOk,
Msgs, Msgs,
#state{limiter_timer = undefined, limiter = Limiter} = State #state{channel = Channel, limiter_timer = undefined, limiter = Limiter} = State
) -> ) ->
case emqx_limiter_container:check_list(Needs, Limiter) of case emqx_limiter_container:check_list(Needs, Limiter) of
{ok, Limiter2} -> {ok, Limiter2} ->
WhenOk(Data, Msgs, State#state{limiter = Limiter2}); WhenOk(Data, Msgs, State#state{limiter = Limiter2});
{pause, Time, Limiter2} -> {pause, Time, Limiter2} ->
?SLOG(debug, #{ ?SLOG_THROTTLE(
msg => "pause_time_due_to_rate_limit", warning,
#{
msg => pause_time_due_to_rate_limit,
needs => Needs, needs => Needs,
time_in_ms => Time time_in_ms => Time
}), },
#{
tag => "RATE",
clientid => emqx_channel:info(clientid, Channel)
}
),
Retry = #retry{ Retry = #retry{
types = [Type || {_, Type} <- Needs], types = [Type || {_, Type} <- Needs],
@ -1057,7 +1064,7 @@ check_limiter(
%% try to perform a retry %% try to perform a retry
-spec retry_limiter(state()) -> _. -spec retry_limiter(state()) -> _.
retry_limiter(#state{limiter = Limiter} = State) -> retry_limiter(#state{channel = Channel, limiter = Limiter} = State) ->
#retry{types = Types, data = Data, next = Next} = #retry{types = Types, data = Data, next = Next} =
emqx_limiter_container:get_retry_context(Limiter), emqx_limiter_container:get_retry_context(Limiter),
case emqx_limiter_container:retry_list(Types, Limiter) of case emqx_limiter_container:retry_list(Types, Limiter) of
@ -1071,11 +1078,18 @@ retry_limiter(#state{limiter = Limiter} = State) ->
} }
); );
{pause, Time, Limiter2} -> {pause, Time, Limiter2} ->
?SLOG(debug, #{ ?SLOG_THROTTLE(
msg => "pause_time_due_to_rate_limit", warning,
#{
msg => pause_time_due_to_rate_limit,
types => Types, types => Types,
time_in_ms => Time time_in_ms => Time
}), },
#{
tag => "RATE",
clientid => emqx_channel:info(clientid, Channel)
}
),
TRef = start_timer(Time, limit_timeout), TRef = start_timer(Time, limit_timeout),

View File

@ -600,17 +600,24 @@ check_limiter(
Data, Data,
WhenOk, WhenOk,
Msgs, Msgs,
#state{limiter_timer = undefined, limiter = Limiter} = State #state{channel = Channel, limiter_timer = undefined, limiter = Limiter} = State
) -> ) ->
case emqx_limiter_container:check_list(Needs, Limiter) of case emqx_limiter_container:check_list(Needs, Limiter) of
{ok, Limiter2} -> {ok, Limiter2} ->
WhenOk(Data, Msgs, State#state{limiter = Limiter2}); WhenOk(Data, Msgs, State#state{limiter = Limiter2});
{pause, Time, Limiter2} -> {pause, Time, Limiter2} ->
?SLOG(debug, #{ ?SLOG_THROTTLE(
msg => "pause_time_due_to_rate_limit", warning,
#{
msg => pause_time_due_to_rate_limit,
needs => Needs, needs => Needs,
time_in_ms => Time time_in_ms => Time
}), },
#{
tag => "RATE",
clientid => emqx_channel:info(clientid, Channel)
}
),
Retry = #retry{ Retry = #retry{
types = [Type || {_, Type} <- Needs], types = [Type || {_, Type} <- Needs],
@ -644,7 +651,7 @@ check_limiter(
State#state{limiter_buffer = queue:in(New, Buffer)}. State#state{limiter_buffer = queue:in(New, Buffer)}.
-spec retry_limiter(state()) -> state(). -spec retry_limiter(state()) -> state().
retry_limiter(#state{limiter = Limiter} = State) -> retry_limiter(#state{channel = Channel, limiter = Limiter} = State) ->
#retry{types = Types, data = Data, next = Next} = emqx_limiter_container:get_retry_context( #retry{types = Types, data = Data, next = Next} = emqx_limiter_container:get_retry_context(
Limiter Limiter
), ),
@ -659,11 +666,18 @@ retry_limiter(#state{limiter = Limiter} = State) ->
} }
); );
{pause, Time, Limiter2} -> {pause, Time, Limiter2} ->
?SLOG(debug, #{ ?SLOG_THROTTLE(
msg => "pause_time_due_to_rate_limit", warning,
#{
msg => pause_time_due_to_rate_limit,
types => Types, types => Types,
time_in_ms => Time time_in_ms => Time
}), },
#{
tag => "RATE",
clientid => emqx_channel:info(clientid, Channel)
}
),
TRef = start_timer(Time, limit_timeout), TRef = start_timer(Time, limit_timeout),

View File

@ -84,7 +84,8 @@
cannot_publish_to_topic_due_to_not_authorized, cannot_publish_to_topic_due_to_not_authorized,
cannot_publish_to_topic_due_to_quota_exceeded, cannot_publish_to_topic_due_to_quota_exceeded,
connection_rejected_due_to_license_limit_reached, connection_rejected_due_to_license_limit_reached,
dropped_msg_due_to_mqueue_is_full dropped_msg_due_to_mqueue_is_full,
pause_time_due_to_rate_limit
]). ]).
%% Callback to upgrade config after loaded from config file but before validation. %% Callback to upgrade config after loaded from config file but before validation.