diff options
author | Robert Newson <rnewson@apache.org> | 2021-03-24 09:43:30 +0000 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2021-03-24 09:43:30 +0000 |
commit | 814da7958fc884eb672f84bad85f88fa5b6fc63b (patch) | |
tree | 7db0a8164964a5389a2c28faa197c037f11780e3 | |
parent | 1b7efadd7317ab66b1f7140c31be81c4e1c77d0b (diff) | |
download | couchdb-814da7958fc884eb672f84bad85f88fa5b6fc63b.tar.gz |
Redefine max_dbs_open to be per couch_server
-rw-r--r-- | rel/overlay/etc/default.ini | 7 | ||||
-rw-r--r-- | src/couch/src/couch_server.erl | 15 |
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, []), |