diff options
author | Matthew Wild <mwild1@gmail.com> | 2020-06-15 14:16:34 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2020-06-15 14:16:34 +0100 |
commit | 6a9eb753e087ff7acddead6c2908f6a617639bc2 (patch) | |
tree | a62f9a64e0a77c61b7481f9a4b8d531a7af0e8d2 /util/startup.lua | |
parent | 0b812aacb0b2fb4be83343c287538285b9052b84 (diff) | |
download | prosody-6a9eb753e087ff7acddead6c2908f6a617639bc2.tar.gz prosody-6a9eb753e087ff7acddead6c2908f6a617639bc2.zip |
util.startup: Configure the GC on startup, using the config or built-in defaults
Diffstat (limited to 'util/startup.lua')
-rw-r--r-- | util/startup.lua | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/util/startup.lua b/util/startup.lua index 2a7e8a36..c1f4ec8b 100644 --- a/util/startup.lua +++ b/util/startup.lua @@ -12,6 +12,8 @@ local dependencies = require "util.dependencies"; local original_logging_config; +local default_gc_params = { mode = "incremental", threshold = 105, speed = 250 }; + local short_params = { D = "daemonize", F = "no-daemonize" }; local value_params = { config = true }; @@ -544,6 +546,19 @@ function startup.check_unwriteable() end end +function startup.init_gc() + -- Apply garbage collector settings from the config file + local gc = require "util.gc"; + local gc_settings = config.get("*", "gc") or { mode = default_gc_params.mode }; + + local ok, err = gc.configure(gc_settings, default_gc_params); + if not ok then + log("error", "Failed to apply GC configuration: %s", err); + return nil, err; + end + return true; +end + function startup.make_host(hostname) return { type = "local", @@ -573,6 +588,7 @@ function startup.prosodyctl() startup.read_config(); startup.force_console_logging(); startup.init_logging(); + startup.init_gc(); startup.setup_plugindir(); startup.setup_datadir(); startup.chdir(); @@ -593,6 +609,7 @@ function startup.prosody() startup.init_global_state(); startup.read_config(); startup.init_logging(); + startup.init_gc(); startup.sanity_check(); startup.sandbox_require(); startup.set_function_metatable(); |