diff --git a/etc/emqx.conf b/etc/emqx.conf index 9ce950aae..050f5e4f7 100644 --- a/etc/emqx.conf +++ b/etc/emqx.conf @@ -1878,6 +1878,14 @@ plugins.expand_plugins_dir = {{ platform_plugins_dir }}/ ## Default: 1m, 1 minute broker.sys_interval = 1m +## System heartbeat interval of publishing following heart beat message: +## - "$SYS/brokers//uptime" +## - "$SYS/brokers//datetime" +## +## Value: Duration +## Default: 30s +broker.sys_heartbeat = 30s + ## Enable global session registry. ## ## Value: on | off diff --git a/priv/emqx.schema b/priv/emqx.schema index 1366665ca..fe7607413 100644 --- a/priv/emqx.schema +++ b/priv/emqx.schema @@ -1807,6 +1807,11 @@ end}. {default, "1m"} ]}. +{mapping, "broker.sys_heartbeat", "emqx.broker_sys_heartbeat", [ + {datatype, {duration, ms}}, + {default, "30s"} +]}. + {mapping, "broker.enable_session_registry", "emqx.enable_session_registry", [ {default, on}, {datatype, flag} diff --git a/src/emqx_sys.erl b/src/emqx_sys.erl index 37e22856f..51d0d8cb9 100644 --- a/src/emqx_sys.erl +++ b/src/emqx_sys.erl @@ -28,6 +28,7 @@ , datetime/0 , sysdescr/0 , sys_interval/0 + , sys_heatbeat_interval/0 ]). -export([info/0]). @@ -92,6 +93,11 @@ datetime() -> sys_interval() -> application:get_env(?APP, broker_sys_interval, 60000). +%% @doc Get sys heatbeat interval +-spec(sys_heatbeat_interval() -> pos_integer()). +sys_heatbeat_interval() -> + application:get_env(?APP, sys_heartbeat, 30000). + %% @doc Get sys info -spec(info() -> list(tuple())). info() -> @@ -111,7 +117,7 @@ init([]) -> {ok, heartbeat(tick(State))}. heartbeat(State) -> - State#state{heartbeat = start_timer(timer:seconds(1), heartbeat)}. + State#state{heartbeat = start_timer(sys_heatbeat_interval(), heartbeat)}. tick(State) -> State#state{ticker = start_timer(sys_interval(), tick)}.