fix(sessds): Replace min- and max- batch size with batch_size

This commit is contained in:
ieQu1 2024-02-23 12:37:14 +01:00
parent 94b0ab983d
commit 91ddbbcc3f
No known key found for this signature in database
GPG Key ID: 488654DF3FED6FDE
3 changed files with 47 additions and 14 deletions

View File

@ -733,7 +733,7 @@ fetch_new_messages(Session = #{s := S}, ClientInfo) ->
fetch_new_messages([], Session, _ClientInfo) ->
Session;
fetch_new_messages([I | Streams], Session0 = #{inflight := Inflight}, ClientInfo) ->
BatchSize = emqx_config:get([session_persistence, max_batch_size]),
BatchSize = emqx_config:get([session_persistence, batch_size]),
case emqx_persistent_session_ds_inflight:n_buffered(all, Inflight) >= BatchSize of
true ->
%% Buffer is full:

View File

@ -258,7 +258,10 @@ roots(medium) ->
{"durable_storage",
sc(
ref("durable_storage"),
#{importance => ?IMPORTANCE_MEDIUM}
#{
importance => ?IMPORTANCE_MEDIUM,
desc => ?DESC(durable_storage)
}
)}
];
roots(low) ->
@ -1659,20 +1662,33 @@ fields("session_persistence") ->
default => false
}
)},
{"batch_size",
sc(
pos_integer(),
#{
default => 100,
desc => ?DESC(session_ds_batch_size),
importance => ?IMPORTANCE_MEDIUM
}
)},
%% Deprecated, now the replayer always use constant batch size:
{"max_batch_size",
sc(
pos_integer(),
#{
default => 100,
desc => ?DESC(session_ds_max_batch_size)
desc => ?DESC(session_ds_max_batch_size),
importance => ?IMPORTANCE_HIDDEN
}
)},
%% Deprecated, now the replayer always use constant batch size:
{"min_batch_size",
sc(
pos_integer(),
#{
default => 100,
desc => ?DESC(session_ds_min_batch_size)
desc => ?DESC(session_ds_min_batch_size),
importance => ?IMPORTANCE_HIDDEN
}
)},
{"idle_poll_interval",

View File

@ -1531,29 +1531,46 @@ resource_tags.label:
resource_tags.desc:
"""Tags to annotate this config entry."""
session_persistence_enable.label:
"""Enable session persistence"""
session_persistence_enable.desc:
"""Use durable storage for client sessions persistence.
If enabled, sessions configured to outlive client connections, along with their corresponding messages, will be durably stored and survive broker downtime."""
If enabled, sessions configured to outlive client connections, along with their corresponding messages, will be durably stored and survive broker downtime.
:::warning
This feature is currently experimental. Please don't enable it in the producation environments that contain valuable data.
:::"""
session_ds_session_gc_interval.label:
"""Session garbage collection interval"""
session_ds_session_gc_interval.desc:
"""The interval at which session garbage collection is executed for persistent sessions."""
session_ds_session_gc_batch_size.label:
"""Session garbage collection batch size"""
session_ds_session_gc_batch_size.desc:
"""The size of each batch of expired persistent sessions to be garbage collected per iteration."""
session_ds_max_batch_size.desc:
session_ds_batch_size.label:
"""Batch size"""
session_ds_batch_size.desc:
"""This value affects the flow control for the persistent sessions.
The session queries the DB for the new messages in batches.
Size of the batch doesn't exceed this value or `ReceiveMaximum`, whichever is smaller."""
Persistent session queries the durable message storage in batches.
This value specifies size of the batch.
session_ds_min_batch_size.desc:
"""This value affects the flow control for the persistent sessions.
The session will query the DB for the new messages when the value of `FreeSpace` variable is larger than this value or `ReceiveMaximum` / 2, whichever is smaller.
Note: larger batches generally improve the throughput and overall performance of the system, but increase RAM usage per client."""
`FreeSpace` is calculated as `ReceiveMaximum` for the session - number of inflight messages."""
durable_storage.label:
"""Durable storage"""
session_ds_message_retention_period.desc:
"""The minimum amount of time that messages should be retained for. After messages have been in storage for at least this period of time, they'll be dropped."""
durable_storage.desc:
"""Configuration related to the EMQX durable storages.
EMQX uses durable storages to offload various data, such as MQTT messages, to disc."""
}