diff --git a/apps/emqx/src/emqx_persistent_session_ds.erl b/apps/emqx/src/emqx_persistent_session_ds.erl index 37385c12c..443c6c39d 100644 --- a/apps/emqx/src/emqx_persistent_session_ds.erl +++ b/apps/emqx/src/emqx_persistent_session_ds.erl @@ -429,7 +429,8 @@ handle_timeout( {ok, Publishes, Session}; handle_timeout(_ClientInfo, ?TIMER_GET_STREAMS, Session) -> renew_streams(Session), - {ok, [], emqx_session:ensure_timer(?TIMER_GET_STREAMS, 100, Session)}; + Interval = emqx_config:get([session_persistence, renew_streams_interval]), + {ok, [], emqx_session:ensure_timer(?TIMER_GET_STREAMS, Interval, Session)}; handle_timeout(_ClientInfo, ?TIMER_BUMP_LAST_ALIVE_AT, Session0) -> %% Note: we take a pessimistic approach here and assume that the client will be alive %% until the next bump timeout. With this, we avoid garbage collecting this session diff --git a/apps/emqx/src/emqx_schema.erl b/apps/emqx/src/emqx_schema.erl index cdb1035df..d915becc0 100644 --- a/apps/emqx/src/emqx_schema.erl +++ b/apps/emqx/src/emqx_schema.erl @@ -1805,6 +1805,14 @@ fields("session_persistence") -> desc => ?DESC(session_ds_last_alive_update_interval) } )}, + {"renew_streams_interval", + sc( + timeout_duration(), + #{ + default => <<"5000ms">>, + importance => ?IMPORTANCE_HIDDEN + } + )}, {"session_gc_interval", sc( timeout_duration(),