diff --git a/etc/emqx.conf b/etc/emqx.conf index e7e37f0a0..c0a34837e 100644 --- a/etc/emqx.conf +++ b/etc/emqx.conf @@ -730,7 +730,7 @@ zone.external.force_gc_policy = 16000|16MB ## of queued MQTT messages of QoS 1 and 2. ## ## Numbers delimited by `|'. Zero or negative is to disable. -## zone.external.force_shutdown_policy = 32000|32MB +zone.external.force_shutdown_policy = 10000|32MB ## Maximum MQTT packet size allowed. ## @@ -982,7 +982,7 @@ zone.internal.mqueue_store_qos0 = true zone.internal.enable_flapping_detect = off ## See zone.$name.force_shutdown_policy -## zone.internal.force_shutdown_policy = 128000|128MB +zone.internal.force_shutdown_policy = 128000|64MB ## All the topics will be prefixed with the mountpoint path if this option is enabled. ## diff --git a/priv/emqx.schema b/priv/emqx.schema index 7ca1f06ff..7d543dde0 100644 --- a/priv/emqx.schema +++ b/priv/emqx.schema @@ -1026,6 +1026,7 @@ end}. %% of queued MQTT messages of QoS 1 and 2. %% Zero or negative is to disable. {mapping, "zone.$name.force_shutdown_policy", "emqx.zones", [ + {default, "default"}, {datatype, string} ]}. @@ -1082,6 +1083,17 @@ end}. count => list_to_integer(Count)} end, {force_gc_policy, GcPolicy}; + (["force_shutdown_policy"], "default") -> + {DefaultLen, DefaultSize} = + case WordSize = erlang:system_info(wordsize) of + 8 -> % arch_64 + {10000, cuttlefish_bytesize:parse("32MB")}; + 4 -> % arch_32 + {10000, cuttlefish_bytesize:parse("16MB")} + end, + {force_shutdown_policy, #{message_queue_len => DefaultLen, + max_heap_size => DefaultSize div WordSize + }}; (["force_shutdown_policy"], Val) -> [Len, Siz] = string:tokens(Val, "| "), MaxSiz = case WordSize = erlang:system_info(wordsize) of