diff options
author | Mike Wallace <mikewallace1979@googlemail.com> | 2014-08-21 17:15:33 +0100 |
---|---|---|
committer | Jay Doane <jaydoane@apache.org> | 2021-04-19 00:35:19 -0700 |
commit | 01981c52df46177d18cbb7e8125cdd588675fb6b (patch) | |
tree | 70995520208c4b397bcfa121559043adfbd86409 | |
parent | 9fb7d72eee1b524d25c83d6429d43b47fb21df4b (diff) | |
download | couchdb-01981c52df46177d18cbb7e8125cdd588675fb6b.tar.gz |
Diagnostic check for processes by memory usage
This commit adds a diagnostic check that checks for processes
where memory usage exceeds a set threshold (100MB).
BugzID: 32875
-rw-r--r-- | src/weatherreport/src/weatherreport_check_process_memory.erl | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/weatherreport/src/weatherreport_check_process_memory.erl b/src/weatherreport/src/weatherreport_check_process_memory.erl new file mode 100644 index 000000000..7a376874f --- /dev/null +++ b/src/weatherreport/src/weatherreport_check_process_memory.erl @@ -0,0 +1,57 @@ +%% ------------------------------------------------------------------- +%% +%% weatherreport - automated diagnostic tools for CouchDB +%% +%% Copyright (c) 2014 Cloudant +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% ------------------------------------------------------------------- + +%% @doc Diagnostic that checks for processes with high memory usage +%% and sends a warning message if one or more processes exceed the +%% threshold. +-module(weatherreport_check_process_memory). +-behaviour(weatherreport_check). + +-export([description/0, + valid/0, + check/1, + format/1]). + +-define(THRESHOLD, 104857600). + +-spec description() -> string(). +description() -> + "Check for processes with large mailboxes". + +-spec valid() -> boolean(). +valid() -> + weatherreport_node:can_connect(). + +-spec check(list()) -> [{atom(), term()}]. +check(Opts) -> + weatherreport_util:check_proc_count( + memory, + ?THRESHOLD, + Opts). + +-spec format(term()) -> {io:format(), [term()]}. +format({high, {Pid, Memory, Info, Pinfo}}) -> + {"Process ~w has excessive memory usage of ~w: ~w ~w", [Pid, Memory, Info, Pinfo]}; +format({high, {Pid, Memory, Info}}) -> + {"Process ~w has excessive memory usage of ~w: ~w", [Pid, Memory, Info]}; +format({ok, {Pid, Memory, Info}}) -> + {"Process ~w has memory usage of ~w: ~w", [Pid, Memory, Info]}. |