diff options
Diffstat (limited to 'src/couch/src/couch_server.erl')
-rw-r--r-- | src/couch/src/couch_server.erl | 11 |
1 files changed, 10 insertions, 1 deletions
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"). |