diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-12-17 21:03:40 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-12-17 21:03:40 +0300 |
commit | 59f4efe3dd78c87ad7eec6854e68c77b343c4258 (patch) | |
tree | 0383c0ed9e5f7c96206c807aca12e7873011e1f7 /src/ejabberd_system_monitor.erl | |
parent | Fix processing order (diff) |
Kill and restart lager when it's overloaded
Diffstat (limited to 'src/ejabberd_system_monitor.erl')
-rw-r--r-- | src/ejabberd_system_monitor.erl | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/ejabberd_system_monitor.erl b/src/ejabberd_system_monitor.erl index b0df101b..d2cd7d65 100644 --- a/src/ejabberd_system_monitor.erl +++ b/src/ejabberd_system_monitor.erl @@ -68,11 +68,7 @@ start() -> ejabberd:start_app(os_mon). excluded_apps() -> - %% FIXME: lager gets overloaded very often, but - %% it fails to get recovered after brutal kill, - %% so it's better to make it tolerate crashes - %% rather than ignoring the overload - [os_mon, mnesia, sasl, stdlib, kernel, lager]. + [os_mon, mnesia, sasl, stdlib, kernel]. %%%=================================================================== %%% gen_event callbacks @@ -270,8 +266,11 @@ do_kill(Stats, Threshold) -> false; false -> case kill_proc(Name) of - false -> false; - Pid -> {true, Pid} + false -> + false; + Pid -> + maybe_restart_app(App), + {true, Pid} end end; (_) -> @@ -295,6 +294,12 @@ kill_proc(Pid) -> exit(Pid, kill), Pid. +-spec maybe_restart_app(atom()) -> any(). +maybe_restart_app(lager) -> + ejabberd_logger:restart(); +maybe_restart_app(_) -> + ok. + -spec opt_type(oom_killer) -> fun((boolean()) -> boolean()); (atom()) -> [atom()]. opt_type(oom_killer) -> |