docs(olp): emqx_olp module

This commit is contained in:
William Yang 2021-10-06 11:16:14 +02:00
parent 9ecb7821f9
commit 77f8159ca1
1 changed files with 12 additions and 1 deletions

View File

@ -43,10 +43,15 @@
-define(overload_protection, overload_protection). -define(overload_protection, overload_protection).
%% @doc Light realtime check if system is overloaded.
-spec is_overloaded() -> boolean(). -spec is_overloaded() -> boolean().
is_overloaded() -> is_overloaded() ->
load_ctl:is_overloaded(). load_ctl:is_overloaded().
%% @doc Backoff with a delay if the system is overloaded, for tasks that could be deferred.
%% returns `false' if backoff didn't happen, the system is cool.
%% returns `ok' if backoff is triggered and get unblocked when the system is cool.
%% returns `timeout' if backoff is trigged but get unblocked due to timeout as configured.
-spec backoff(Zone :: atom()) -> ok | false | timeout. -spec backoff(Zone :: atom()) -> ok | false | timeout.
backoff(Zone) -> backoff(Zone) ->
case emqx_config:get_zone_conf(Zone, [?overload_protection]) of case emqx_config:get_zone_conf(Zone, [?overload_protection]) of
@ -64,14 +69,18 @@ backoff(Zone) ->
ok ok
end. end.
%% @doc If forceful GC should be skipped when the system is overloaded.
-spec backoff_gc(Zone :: atom()) -> boolean(). -spec backoff_gc(Zone :: atom()) -> boolean().
backoff_gc(Zone) -> backoff_gc(Zone) ->
do_check(Zone, ?FUNCTION_NAME, 'olp.gc'). do_check(Zone, ?FUNCTION_NAME, 'olp.gc').
%% @doc If hibernation should be skipped when the system is overloaded.
-spec backoff_hibernation(Zone :: atom()) -> boolean(). -spec backoff_hibernation(Zone :: atom()) -> boolean().
backoff_hibernation(Zone) -> backoff_hibernation(Zone) ->
do_check(Zone, ?FUNCTION_NAME, 'olp.hbn'). do_check(Zone, ?FUNCTION_NAME, 'olp.hbn').
%% @doc Returns {error, overloaded} if new connection should be
%% closed when system is overloaded.
-spec backoff_new_conn(Zone :: atom()) -> ok | {error, overloaded}. -spec backoff_new_conn(Zone :: atom()) -> ok | {error, overloaded}.
backoff_new_conn(Zone) -> backoff_new_conn(Zone) ->
case do_check(Zone, ?FUNCTION_NAME, 'olp.new_conn') of case do_check(Zone, ?FUNCTION_NAME, 'olp.new_conn') of
@ -85,11 +94,13 @@ backoff_new_conn(Zone) ->
status() -> status() ->
is_overloaded(). is_overloaded().
%% @doc turn off backgroud runq check.
-spec off() -> ok | {error, timeout}. -spec off() -> ok | {error, timeout}.
off() -> off() ->
load_ctl:stop_runq_flagman(5000). load_ctl:stop_runq_flagman(5000).
-spec on() -> any(). %% @doc turn on backgroud runq check.
-spec on() -> {ok, pid()} | {error, running | restarting}.
on() -> on() ->
load_ctl:restart_runq_flagman(). load_ctl:restart_runq_flagman().