diff options
author | Robert Newson <rnewson@apache.org> | 2021-02-15 13:24:13 +0000 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2021-02-15 19:36:56 +0000 |
commit | 5724e8e3f35839f67e15dfca478a2b80103127b4 (patch) | |
tree | bb2ba4363f10833a4224d3bd975c020786dd57b7 | |
parent | f261b80f559730c9c1e645457a46e5f15518086a (diff) | |
download | couchdb-5724e8e3f35839f67e15dfca478a2b80103127b4.tar.gz |
Add "couch_server" aggregate to _system outputcouch_server_system_aggregate
This helps ease transition from singleton couch_server to
multiple. The "couch_server" message queue is simply the sum of the
couch_server_X message queues.
-rw-r--r-- | src/chttpd/src/chttpd_node.erl | 3 | ||||
-rw-r--r-- | src/couch/src/couch_server.erl | 11 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/chttpd/src/chttpd_node.erl b/src/chttpd/src/chttpd_node.erl index 6407df106..734c49bd7 100644 --- a/src/chttpd/src/chttpd_node.erl +++ b/src/chttpd/src/chttpd_node.erl @@ -209,7 +209,8 @@ get_stats() -> {NumberOfGCs, WordsReclaimed, _} = statistics(garbage_collection), {{input, Input}, {output, Output}} = statistics(io), {CF, CDU} = db_pid_stats(), - MessageQueues0 = [{couch_file, {CF}}, {couch_db_updater, {CDU}}], + MessageQueues0 = [{couch_file, {CF}}, {couch_db_updater, {CDU}}, + {couch_server, couch_server:aggregate_queue_len()}], MessageQueues = MessageQueues0 ++ message_queues(registered()), {SQ, DCQ} = run_queues(), [ diff --git a/src/couch/src/couch_server.erl b/src/couch/src/couch_server.erl index 59b630ee7..feeebdf17 100644 --- a/src/couch/src/couch_server.erl +++ b/src/couch/src/couch_server.erl @@ -28,6 +28,7 @@ -export([lock/2, unlock/1]). -export([db_updated/1]). -export([num_servers/0, couch_server/1, couch_dbs_pid_to_name/1, couch_dbs/1]). +-export([aggregate_queue_len/0]). % config_listener api -export([handle_config_change/5, handle_config_terminate/3]). @@ -359,7 +360,7 @@ handle_config_terminate(_Server, _Reason, N) -> per_couch_server(X) -> - erlang:max(1, X div couch_server:num_servers()). + erlang:max(1, X div num_servers()). all_databases() -> @@ -943,6 +944,14 @@ num_servers() -> erlang:system_info(schedulers). +aggregate_queue_len() -> + N = num_servers(), + Names = [couch_server(I) || I <- lists:seq(1, N)], + MQs = [process_info(whereis(Name), message_queue_len) || + Name <- Names], + lists:sum([X || {_, X} <- MQs]). + + -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). |