diff options
author | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-06-14 12:33:26 +0300 |
---|---|---|
committer | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-06-14 12:33:26 +0300 |
commit | a02cff0e780bb735531594c4ece81e8628f79782 (patch) | |
tree | 6fe7d8219d14f58183be1741fcea262c216db447 /src/ejabberd_system_monitor.erl | |
parent | Return jid_malformed error when sending presence without nick to conference (diff) |
Use new configuration validator
Diffstat (limited to 'src/ejabberd_system_monitor.erl')
-rw-r--r-- | src/ejabberd_system_monitor.erl | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/src/ejabberd_system_monitor.erl b/src/ejabberd_system_monitor.erl index e5af257a8..1a4e3c765 100644 --- a/src/ejabberd_system_monitor.erl +++ b/src/ejabberd_system_monitor.erl @@ -25,13 +25,12 @@ -module(ejabberd_system_monitor). -behaviour(gen_event). --behaviour(ejabberd_config). -author('alexey@process-one.net'). -author('ekhramtsov@process-one.net'). %% API --export([start/0, opt_type/1, config_reloaded/0]). +-export([start/0, config_reloaded/0]). %% gen_event callbacks -export([init/1, handle_event/2, handle_call/2, @@ -43,8 +42,8 @@ -define(CHECK_INTERVAL, timer:seconds(30)). --record(state, {tref :: reference(), - mref :: reference()}). +-record(state, {tref :: undefined | reference(), + mref :: undefined | reference()}). -record(proc_stat, {qlen :: non_neg_integer(), memory :: non_neg_integer(), initial_call :: mfa(), @@ -134,7 +133,7 @@ handle_overload(State) -> handle_overload(_State, Procs) -> AppPids = get_app_pids(), {TotalMsgs, ProcsNum, Apps, Stats} = overloaded_procs(AppPids, Procs), - MaxMsgs = ejabberd_config:get_option(oom_queue, 10000), + MaxMsgs = ejabberd_option:oom_queue(), if TotalMsgs >= MaxMsgs -> SortedStats = lists:reverse(lists:keysort(#proc_stat.qlen, Stats)), error_logger:warning_msg( @@ -224,14 +223,14 @@ restart_timer(State) -> TRef = erlang:start_timer(?CHECK_INTERVAL, self(), handle_overload), State#state{tref = TRef}. --spec format_apps(dict:dict()) -> io:data(). +-spec format_apps(dict:dict()) -> iodata(). format_apps(Apps) -> AppList = lists:reverse(lists:keysort(2, dict:to_list(Apps))), string:join( [io_lib:format("~p (~b msgs)", [App, Msgs]) || {App, Msgs} <- AppList], ", "). --spec format_top_procs([proc_stat()]) -> io:data(). +-spec format_top_procs([proc_stat()]) -> iodata(). format_top_procs(Stats) -> Stats1 = lists:sublist(Stats, 5), string:join( @@ -241,7 +240,7 @@ format_top_procs(Stats) -> end,Stats1), io_lib:nl()). --spec format_proc(proc_stat()) -> io:data(). +-spec format_proc(proc_stat()) -> iodata(). format_proc(#proc_stat{qlen = Len, memory = Mem, initial_call = InitCall, current_function = CurrFun, ancestors = Ancs, application = App}) -> @@ -250,7 +249,7 @@ format_proc(#proc_stat{qlen = Len, memory = Mem, initial_call = InitCall, "current_function = ~s, ancestors = ~w, application = ~w", [Len, Mem, format_mfa(InitCall), format_mfa(CurrFun), Ancs, App]). --spec format_mfa(mfa()) -> io:data(). +-spec format_mfa(mfa()) -> iodata(). format_mfa({M, F, A}) when is_atom(M), is_atom(F), is_integer(A) -> io_lib:format("~s:~s/~b", [M, F, A]); format_mfa(WTF) -> @@ -258,7 +257,7 @@ format_mfa(WTF) -> -spec kill([proc_stat()], non_neg_integer()) -> ok. kill(Stats, Threshold) -> - case ejabberd_config:get_option(oom_killer, true) of + case ejabberd_option:oom_killer() of true -> do_kill(Stats, Threshold); false -> @@ -308,7 +307,7 @@ kill_proc(Pid) -> -spec set_oom_watermark() -> ok. set_oom_watermark() -> - WaterMark = ejabberd_config:get_option(oom_watermark, 80), + WaterMark = ejabberd_option:oom_watermark(), memsup:set_sysmem_high_watermark(WaterMark/100). -spec maybe_restart_app(atom()) -> any(). @@ -316,11 +315,3 @@ maybe_restart_app(lager) -> ejabberd_logger:restart(); maybe_restart_app(_) -> ok. - -opt_type(oom_killer) -> - fun(B) when is_boolean(B) -> B end; -opt_type(oom_watermark) -> - fun(I) when is_integer(I), I>0, I<100 -> I end; -opt_type(oom_queue) -> - fun(I) when is_integer(I), I>0 -> I end; -opt_type(_) -> [oom_killer, oom_watermark, oom_queue]. |