perf: add TLS config hibernate_after, reduce memory footprint

This commit is contained in:
William Yang 2023-02-13 17:55:03 +01:00
parent 43aab61a3a
commit 572e50e0a2
3 changed files with 56 additions and 0 deletions

View File

@ -1495,6 +1495,17 @@ In case PSK cipher suites are intended, make sure to configure
}
}
common_ssl_opts_schema_hibernate_after {
desc {
en: """ Hibernate the SSL process after idling for amount of time reducing its memory footprint. """
zh: """ 在闲置一定时间后休眠 SSL 进程,减少其内存占用。"""
}
label: {
en: "hibernate after"
zh: "闲置多久后休眠"
}
}
ciphers_schema_common {
desc {
en: """This config holds TLS cipher suite names separated by comma,

View File

@ -1929,6 +1929,16 @@ common_ssl_opts_schema(Defaults) ->
default => Df("secure_renegotiate", true),
desc => ?DESC(common_ssl_opts_schema_secure_renegotiate)
}
)},
{"hibernate_after",
sc(
duration(),
#{
default => undefined,
required => false,
desc => ?DESC(common_ssl_opts_schema_hibernate_after)
}
)}
].

View File

@ -138,6 +138,41 @@ t_restart_listeners(_) ->
ok = emqx_listeners:restart(),
ok = emqx_listeners:stop().
t_restart_listeners_with_hibernate_after_disabled(Config) ->
OldLConf = emqx_config:get([listeners]),
maps:foreach(
fun(LType, Listeners) ->
maps:foreach(
fun(Name, Opts) ->
case maps:is_key(ssl_options, Opts) of
true ->
emqx_config:put(
[
listeners,
LType,
Name,
ssl_options,
hibernate_after
],
5000
);
_ ->
skip
end
end,
Listeners
)
end,
OldLConf
),
ok = emqx_listeners:start(),
ok = emqx_listeners:stop(),
%% flakyness: eaddrinuse
timer:sleep(timer:seconds(2)),
ok = emqx_listeners:restart(),
ok = emqx_listeners:stop(),
emqx_config:put([listeners], OldLConf).
t_max_conns_tcp(_) ->
%% Note: Using a string representation for the bind address like
%% "127.0.0.1" does not work