summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2021-03-24 09:43:30 +0000
committerRobert Newson <rnewson@apache.org>2021-03-24 09:43:30 +0000
commit814da7958fc884eb672f84bad85f88fa5b6fc63b (patch)
tree7db0a8164964a5389a2c28faa197c037f11780e3
parent1b7efadd7317ab66b1f7140c31be81c4e1c77d0b (diff)
downloadcouchdb-814da7958fc884eb672f84bad85f88fa5b6fc63b.tar.gz
Redefine max_dbs_open to be per couch_server
-rw-r--r--rel/overlay/etc/default.ini7
-rw-r--r--src/couch/src/couch_server.erl15
2 files changed, 7 insertions, 15 deletions
diff --git a/rel/overlay/etc/default.ini b/rel/overlay/etc/default.ini
index 6c992d7bd..75b855d8d 100644
--- a/rel/overlay/etc/default.ini
+++ b/rel/overlay/etc/default.ini
@@ -10,10 +10,9 @@ view_index_dir = {{view_index_dir}}
; plugin_dir =
os_process_timeout = 5000 ; 5 seconds. for view servers.
-; Maximum number of .couch files to open at once.
-; The actual limit may be slightly lower depending on how
-; many schedulers you have as the allowance is divided evenly
-; among them.
+; Maximum number of .couch files to open at once per couch_server
+; process. There will be as many couch_server processes as there are
+; schedulers (typically the same as the number of cores in the host)
max_dbs_open = 500
; Method used to compress everything that is appended to database and view index files, except
diff --git a/src/couch/src/couch_server.erl b/src/couch/src/couch_server.erl
index feeebdf17..4d1a96b19 100644
--- a/src/couch/src/couch_server.erl
+++ b/src/couch/src/couch_server.erl
@@ -294,7 +294,7 @@ init([N]) ->
process_flag(trap_exit, true),
{ok, #server{root_dir=RootDir,
engines = Engines,
- max_dbs_open=per_couch_server(MaxDbsOpen),
+ max_dbs_open=MaxDbsOpen,
update_lru_on_read=UpdateLruOnRead,
start_time=couch_util:rfc1123_date(),
couch_dbs=couch_dbs(N),
@@ -323,13 +323,11 @@ handle_config_change("couchdb", "update_lru_on_read", "true", _, N) ->
handle_config_change("couchdb", "update_lru_on_read", _, _, N) ->
gen_server:call(couch_server(N),{set_update_lru_on_read,false}),
{ok, N};
-handle_config_change("couchdb", "max_dbs_open", Max0, _, N) when is_list(Max0) ->
- Max1 = per_couch_server(list_to_integer(Max0)),
- gen_server:call(couch_server(N),{set_max_dbs_open,Max1}),
+handle_config_change("couchdb", "max_dbs_open", Max, _, N) when is_list(Max) ->
+ gen_server:call(couch_server(N),{set_max_dbs_open,list_to_integer(Max)}),
{ok, N};
handle_config_change("couchdb", "max_dbs_open", _, _, N) ->
- Max = per_couch_server(?MAX_DBS_OPEN),
- gen_server:call(couch_server(N),{set_max_dbs_open,Max}),
+ gen_server:call(couch_server(N),{set_max_dbs_open,?MAX_DBS_OPEN}),
{ok, N};
handle_config_change("couchdb_engines", _, _, _, N) ->
gen_server:call(couch_server(N), reload_engines),
@@ -358,11 +356,6 @@ handle_config_terminate(_, stop, _) ->
handle_config_terminate(_Server, _Reason, N) ->
erlang:send_after(?RELISTEN_DELAY, whereis(?MODULE), {restart_config_listener, N}).
-
-per_couch_server(X) ->
- erlang:max(1, X div num_servers()).
-
-
all_databases() ->
{ok, DbList} = all_databases(
fun(DbName, Acc) -> {ok, [DbName | Acc]} end, []),