From ca0c96fc8925d36ea0c5121520bf7d8f12ad90a5 Mon Sep 17 00:00:00 2001 From: Monty Date: Thu, 22 Mar 2018 20:03:54 +0200 Subject: Adjust table_open_cache to avoid getting error 24 (too many open files) MDEV--15609 engines/funcs.crash_manytables_number crashes with error 24 (too many open files) MDEV-10286 Adjustment of table_open_cache according to system limits does not work when open-files-limit option is provided Fixed by adjusting tc_size downwards if there is not enough file descriptors to use. Other changes: - Ensure that there is 30 (was 10) extra file descriptors for other usage - Decrease TABLE_OPEN_CACHE_MIN to 200 as it's better to have a smaller table cache than getting error 24 - Increase minimum of max_connections and table_open_cache from 1 to 10 as 1 is not usable for any real application, only for testing. --- sql/set_var.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'sql/set_var.h') diff --git a/sql/set_var.h b/sql/set_var.h index cf86ecf18fa..fe66eaff775 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -394,6 +394,16 @@ int sql_set_variables(THD *thd, List *var_list, bool free); set_sys_var_value_origin(&VAR, sys_var::AUTO); \ } while(0) +#define SYSVAR_AUTOSIZE_IF_CHANGED(VAR,VAL,TYPE) \ + do { \ + TYPE tmp= (VAL); \ + if (VAR != tmp) \ + { \ + VAR= (VAL); \ + set_sys_var_value_origin(&VAR, sys_var::AUTO); \ + } \ + } while(0) + void set_sys_var_value_origin(void *ptr, enum sys_var::where here); enum sys_var::where get_sys_var_value_origin(void *ptr); -- cgit v1.2.1