852 lines
25 KiB
Plaintext
852 lines
25 KiB
Plaintext
## NOTE: The configurations in this file will be overridden by
|
||
## `<path-to-emqx-installation>/data/emqx_overrides.conf`
|
||
|
||
##==================================================================
|
||
## Node
|
||
##==================================================================
|
||
node {
|
||
## Node name.
|
||
## See: http://erlang.org/doc/reference_manual/distributed.html
|
||
##
|
||
## @doc node.name
|
||
## ValueType: NodeName
|
||
## Default: emqx@127.0.0.1
|
||
name = "emqx@127.0.0.1"
|
||
|
||
## Cookie for distributed node communication.
|
||
##
|
||
## @doc node.cookie
|
||
## ValueType: String
|
||
## Default: emqxsecretcookie
|
||
cookie = emqxsecretcookie
|
||
|
||
## Data dir for the node
|
||
##
|
||
## @doc node.data_dir
|
||
## ValueType: Folder
|
||
## Default: "{{ platform_data_dir }}/"
|
||
data_dir = "{{ platform_data_dir }}/"
|
||
|
||
## Dir of crash dump file.
|
||
##
|
||
## @doc node.crash_dump_dir
|
||
## ValueType: Folder
|
||
## Default: "{{ platform_log_dir }}/"
|
||
crash_dump_dir = "{{ platform_log_dir }}/"
|
||
|
||
## Global GC Interval.
|
||
##
|
||
## @doc node.global_gc_interval
|
||
## ValueType: Duration
|
||
## Default: 15m
|
||
global_gc_interval = 15m
|
||
|
||
## Sets the etc directory
|
||
etc_dir = "{{ platform_etc_dir }}"
|
||
|
||
## Sets the net_kernel tick time in seconds.
|
||
## Notice that all communicating nodes are to have the same
|
||
## TickTime value specified.
|
||
##
|
||
## See: http://www.erlang.org/doc/man/kernel_app.html#net_ticktime
|
||
##
|
||
## @doc node.dist_net_ticktime
|
||
## ValueType: Number
|
||
## Default: 2m
|
||
dist_net_ticktime = 2m
|
||
|
||
## Sets the port range for the listener socket of a distributed
|
||
## Erlang node.
|
||
## Note that if there are firewalls between clustered nodes, this
|
||
## port segment for nodes’ communication should be allowed.
|
||
##
|
||
## See: http://www.erlang.org/doc/man/kernel_app.html
|
||
##
|
||
## @doc node.dist_listen_min
|
||
## ValueType: Integer
|
||
## Range: [1024,65535]
|
||
## Default: 6369
|
||
dist_listen_min = 6369
|
||
|
||
## Sets the port range for the listener socket of a distributed
|
||
## Erlang node.
|
||
## Note that if there are firewalls between clustered nodes, this
|
||
## port segment for nodes’ communication should be allowed.
|
||
##
|
||
## See: http://www.erlang.org/doc/man/kernel_app.html
|
||
##
|
||
## @doc node.dist_listen_max
|
||
## ValueType: Integer
|
||
## Range: [1024,65535]
|
||
## Default: 6369
|
||
dist_listen_max = 6369
|
||
|
||
## Sets the maximum depth of call stack back-traces in the exit
|
||
## reason element of 'EXIT' tuples.
|
||
## The flag also limits the stacktrace depth returned by
|
||
## process_info item current_stacktrace.
|
||
##
|
||
## @doc node.backtrace_depth
|
||
## ValueType: Integer
|
||
## Range: [0,1024]
|
||
## Default: 23
|
||
backtrace_depth = 23
|
||
|
||
cluster_call {
|
||
## Time interval to retry after a failed call
|
||
##
|
||
## @doc node.cluster_call.retry_interval
|
||
## ValueType: Duration
|
||
## Default: 1s
|
||
retry_interval = 1s
|
||
## Retain the maximum number of completed transactions (for queries)
|
||
##
|
||
## @doc node.cluster_call.max_history
|
||
## ValueType: Integer
|
||
## Range: [1, 500]
|
||
## Default: 100
|
||
max_history = 100
|
||
## Time interval to clear completed but stale transactions.
|
||
## Ensure that the number of completed transactions is less than the max_history
|
||
##
|
||
## @doc node.cluster_call.cleanup_interval
|
||
## ValueType: Duration
|
||
## Default: 5m
|
||
cleanup_interval = 5m
|
||
}
|
||
|
||
}
|
||
|
||
##==================================================================
|
||
## Cluster
|
||
##==================================================================
|
||
cluster {
|
||
## Cluster name.
|
||
##
|
||
## @doc cluster.name
|
||
## ValueType: String
|
||
## Default: emqxcl
|
||
name = emqxcl
|
||
|
||
## Enable cluster autoheal from network partition.
|
||
##
|
||
## @doc cluster.autoheal
|
||
## ValueType: Boolean
|
||
## Default: true
|
||
autoheal = true
|
||
|
||
## Autoclean down node. A down node will be removed from the cluster
|
||
## if this value > 0.
|
||
##
|
||
## @doc cluster.autoclean
|
||
## ValueType: Duration
|
||
## Default: 5m
|
||
autoclean = 5m
|
||
|
||
## Node discovery strategy to join the cluster.
|
||
##
|
||
## @doc cluster.discovery_strategy
|
||
## ValueType: manual | static | mcast | dns | etcd | k8s
|
||
## - manual: Manual join command
|
||
## - static: Static node list
|
||
## - mcast: IP Multicast
|
||
## - dns: DNS A Record
|
||
## - etcd: etcd
|
||
## - k8s: Kubernetes
|
||
##
|
||
## Default: manual
|
||
discovery_strategy = manual
|
||
|
||
##----------------------------------------------------------------
|
||
## Cluster using static node list
|
||
##----------------------------------------------------------------
|
||
static {
|
||
## Node list of the cluster
|
||
##
|
||
## @doc cluster.static.seeds
|
||
## ValueType: Array<NodeName>
|
||
## Default: []
|
||
seeds = ["emqx1@127.0.0.1", "emqx2@127.0.0.1"]
|
||
}
|
||
|
||
##----------------------------------------------------------------
|
||
## Cluster using IP Multicast
|
||
##----------------------------------------------------------------
|
||
mcast {
|
||
## IP Multicast Address.
|
||
##
|
||
## @doc cluster.mcast.addr
|
||
## ValueType: IPAddress
|
||
## Default: "239.192.0.1"
|
||
addr = "239.192.0.1"
|
||
|
||
## Multicast Ports.
|
||
##
|
||
## @doc cluster.mcast.ports
|
||
## ValueType: Array<Port>
|
||
## Default: [4369, 4370]
|
||
ports = [4369, 4370]
|
||
|
||
## Multicast Iface.
|
||
##
|
||
## @doc cluster.mcast.iface
|
||
## ValueType: IPAddress
|
||
## Default: "0.0.0.0"
|
||
iface = "0.0.0.0"
|
||
|
||
## Multicast Ttl.
|
||
##
|
||
## @doc cluster.mcast.ttl
|
||
## ValueType: Integer
|
||
## Range: [0,255]
|
||
## Default: 255
|
||
ttl = 255
|
||
|
||
## Multicast loop.
|
||
##
|
||
## @doc cluster.mcast.loop
|
||
## ValueType: Boolean
|
||
## Default: true
|
||
loop = true
|
||
}
|
||
|
||
##----------------------------------------------------------------
|
||
## Cluster using DNS A records
|
||
##----------------------------------------------------------------
|
||
dns {
|
||
## DNS name.
|
||
##
|
||
## @doc cluster.dns.name
|
||
## ValueType: String
|
||
## Default: localhost
|
||
name = localhost
|
||
|
||
## The App name is used to build 'node.name' with IP address.
|
||
##
|
||
## @doc cluster.dns.app
|
||
## ValueType: String
|
||
## Default: emqx
|
||
app = emqx
|
||
}
|
||
|
||
##----------------------------------------------------------------
|
||
## Cluster using etcd
|
||
##----------------------------------------------------------------
|
||
etcd {
|
||
## Etcd server list, seperated by ','.
|
||
##
|
||
## @doc cluster.etcd.server
|
||
## ValueType: URL
|
||
## Required: true
|
||
server = "http://127.0.0.1:2379"
|
||
|
||
## The prefix helps build nodes path in etcd. Each node in the cluster
|
||
## will create a path in etcd: v2/keys/<prefix>/<name>/<node.name>
|
||
##
|
||
## @doc cluster.etcd.prefix
|
||
## ValueType: String
|
||
## Default: emqxcl
|
||
prefix = emqxcl
|
||
|
||
## The TTL for node's path in etcd.
|
||
##
|
||
## @doc cluster.etcd.node_ttl
|
||
## ValueType: Duration
|
||
## Default: 1m
|
||
node_ttl = 1m
|
||
|
||
## Path to the file containing the user's private PEM-encoded key.
|
||
##
|
||
## @doc cluster.etcd.ssl.keyfile
|
||
## ValueType: File
|
||
## Default: "{{ platform_etc_dir }}/certs/key.pem"
|
||
ssl.keyfile = "{{ platform_etc_dir }}/certs/key.pem"
|
||
|
||
## Path to a file containing the user certificate.
|
||
##
|
||
## @doc cluster.etcd.ssl.certfile
|
||
## ValueType: File
|
||
## Default: "{{ platform_etc_dir }}/certs/cert.pem"
|
||
ssl.certfile = "{{ platform_etc_dir }}/certs/cert.pem"
|
||
|
||
## Path to the file containing PEM-encoded CA certificates. The CA certificates
|
||
## are used during server authentication and when building the client certificate chain.
|
||
##
|
||
## @doc cluster.etcd.ssl.cacertfile
|
||
## ValueType: File
|
||
## Default: "{{ platform_etc_dir }}/certs/cacert.pem"
|
||
ssl.cacertfile = "{{ platform_etc_dir }}/certs/cacert.pem"
|
||
}
|
||
|
||
##----------------------------------------------------------------
|
||
## Cluster using Kubernetes
|
||
##----------------------------------------------------------------
|
||
k8s {
|
||
## Kubernetes API server list, seperated by ','.
|
||
##
|
||
## @doc cluster.k8s.apiserver
|
||
## ValueType: URL
|
||
## Required: true
|
||
apiserver = "http://10.110.111.204:8080"
|
||
|
||
## The service name helps lookup EMQ nodes in the cluster.
|
||
##
|
||
## @doc cluster.k8s.service_name
|
||
## ValueType: String
|
||
## Default: emqx
|
||
service_name = emqx
|
||
|
||
## The address type is used to extract host from k8s service.
|
||
##
|
||
## @doc cluster.k8s.address_type
|
||
## ValueType: ip | dns | hostname
|
||
## Default: ip
|
||
address_type = ip
|
||
|
||
## The app name helps build 'node.name'.
|
||
##
|
||
## @doc cluster.k8s.app_name
|
||
## ValueType: String
|
||
## Default: emqx
|
||
app_name = emqx
|
||
|
||
## The suffix added to dns and hostname get from k8s service
|
||
##
|
||
## @doc cluster.k8s.suffix
|
||
## ValueType: String
|
||
## Default: "pod.local"
|
||
suffix = "pod.local"
|
||
|
||
## Kubernetes Namespace
|
||
##
|
||
## @doc cluster.k8s.namespace
|
||
## ValueType: String
|
||
## Default: default
|
||
namespace = default
|
||
}
|
||
|
||
db_backend = mnesia
|
||
|
||
rlog {
|
||
# role: core
|
||
# core_nodes: []
|
||
}
|
||
|
||
}
|
||
|
||
##==================================================================
|
||
## Log
|
||
##==================================================================
|
||
log {
|
||
##----------------------------------------------------------------
|
||
## The console log handler send log messages to emqx console
|
||
##----------------------------------------------------------------
|
||
console_handler {
|
||
## Log to single line
|
||
## @doc log.console_handler.<name>.enable
|
||
## ValueType: Boolean
|
||
## Default: false
|
||
enable = false
|
||
|
||
## The log level of this handler
|
||
## All the log messages with levels lower than this level will
|
||
## be dropped.
|
||
##
|
||
## @doc log.console_handler.<name>.level
|
||
## ValueType: debug | info | notice | warning | error | critical | alert | emergency
|
||
## Default: warning
|
||
level = warning
|
||
|
||
## Timezone offset to display in logs
|
||
##
|
||
## @doc log.console_handler.<name>.time_offset
|
||
## ValueType: system | utc | String
|
||
## - "system" use system zone
|
||
## - "utc" for Universal Coordinated Time (UTC)
|
||
## - "+hh:mm" or "-hh:mm" for a specified offset
|
||
## Default: system
|
||
time_offset = system
|
||
|
||
## Limits the total number of characters printed for each log event.
|
||
##
|
||
## @doc log.console_handler.<name>.chars_limit
|
||
## ValueType: unlimited | Integer
|
||
## Range: [0, +Inf)
|
||
## Default: unlimited
|
||
chars_limit = unlimited
|
||
|
||
## Maximum depth for Erlang term log formatting
|
||
## and Erlang process message queue inspection.
|
||
##
|
||
## @doc log.console_handler.<name>.max_depth
|
||
## ValueType: unlimited | Integer
|
||
## Default: 100
|
||
max_depth = 100
|
||
|
||
## Log formatter
|
||
## @doc log.console_handler.<name>.formatter
|
||
## ValueType: text | json
|
||
## Default: text
|
||
formatter = text
|
||
|
||
## Log to single line
|
||
## @doc log.console_handler.<name>.single_line
|
||
## ValueType: Boolean
|
||
## Default: true
|
||
single_line = true
|
||
|
||
## The max allowed queue length before switching to sync mode.
|
||
##
|
||
## Log overload protection parameter. If the message queue grows
|
||
## larger than this value the handler switches from anync to sync mode.
|
||
##
|
||
## @doc log.console_handler.<name>.sync_mode_qlen
|
||
## ValueType: Integer
|
||
## Range: [0, ${log.console_handler.<name>.drop_mode_qlen}]
|
||
## Default: 100
|
||
sync_mode_qlen = 100
|
||
|
||
## The max allowed queue length before switching to drop mode.
|
||
##
|
||
## Log overload protection parameter. When the message queue grows
|
||
## larger than this threshold, the handler switches to a mode in which
|
||
## it drops all new events that senders want to log.
|
||
##
|
||
## @doc log.console_handler.<name>.drop_mode_qlen
|
||
## ValueType: Integer
|
||
## Range: [${log.console_handler.<name>.sync_mode_qlen}, ${log.console_handler.<name>.flush_qlen}]
|
||
## Default: 3000
|
||
drop_mode_qlen = 3000
|
||
|
||
## The max allowed queue length before switching to flush mode.
|
||
##
|
||
## Log overload protection parameter. If the length of the message queue
|
||
## grows larger than this threshold, a flush (delete) operation takes place.
|
||
## To flush events, the handler discards the messages in the message queue
|
||
## by receiving them in a loop without logging.
|
||
##
|
||
## @doc log.console_handler.<name>.flush_qlen
|
||
## ValueType: Integer
|
||
## Range: [${log.console_handler.<name>.drop_mode_qlen}, infinity)
|
||
## Default: 8000
|
||
flush_qlen = 8000
|
||
|
||
## Kill the log handler when it gets overloaded.
|
||
##
|
||
## Log overload protection parameter. It is possible that a handler,
|
||
## even if it can successfully manage peaks of high load without crashing,
|
||
## can build up a large message queue, or use a large amount of memory.
|
||
## We could kill the log handler in these cases and restart it after a
|
||
## few seconds.
|
||
##
|
||
## @doc log.console_handler.<name>.overload_kill.enable
|
||
## ValueType: Boolean
|
||
## Default: true
|
||
overload_kill.enable = true
|
||
|
||
## The max allowed queue length before killing the log hanlder.
|
||
##
|
||
## Log overload protection parameter. This is the maximum allowed queue
|
||
## length. If the message queue grows larger than this, the handler
|
||
## process is terminated.
|
||
##
|
||
## @doc log.console_handler.<name>.overload_kill.qlen
|
||
## ValueType: Integer
|
||
## Range: [0, 1048576]
|
||
## Default: 20000
|
||
overload_kill.qlen = 20000
|
||
|
||
## The max allowed memory size before killing the log hanlder.
|
||
##
|
||
## Log overload protection parameter. This is the maximum memory size
|
||
## that the handler process is allowed to use. If the handler grows
|
||
## larger than this, the process is terminated.
|
||
##
|
||
## @doc log.console_handler.<name>.overload_kill.mem_size
|
||
## ValueType: Size
|
||
## Default: 30MB
|
||
overload_kill.mem_size = 30MB
|
||
|
||
## Restart the log hanlder after some seconds.
|
||
##
|
||
## Log overload protection parameter. If the handler is terminated,
|
||
## it restarts automatically after a delay specified in seconds.
|
||
##
|
||
## @doc log.console_handler.<name>.overload_kill.restart_after
|
||
## ValueType: Duration
|
||
## Default: 5s
|
||
overload_kill.restart_after = 5s
|
||
|
||
## Controlling Bursts of Log Requests.
|
||
##
|
||
## Log overload protection parameter. Large bursts of log events - many
|
||
## events received by the handler under a short period of time - can
|
||
## potentially cause problems. By specifying the maximum number of events
|
||
## to be handled within a certain time frame, the handler can avoid
|
||
## choking the log with massive amounts of printouts.
|
||
##
|
||
## Note that there would be no warning if any messages were
|
||
## dropped because of burst control.
|
||
##
|
||
## @doc log.console_handler.<name>.burst_limit.enable
|
||
## ValueType: Boolean
|
||
## Default: false
|
||
burst_limit.enable = false
|
||
|
||
## This config controls the maximum number of events to handle within
|
||
## a time frame. After the limit is reached, successive events are
|
||
## dropped until the end of the time frame defined by `window_time`.
|
||
##
|
||
## @doc log.console_handler.<name>.burst_limit.max_count
|
||
## ValueType: Integer
|
||
## Default: 10000
|
||
burst_limit.max_count = 10000
|
||
|
||
## See the previous description of burst_limit_max_count.
|
||
##
|
||
## @doc log.console_handler.<name>.burst_limit.window_time
|
||
## ValueType: duration
|
||
## Default: 1s
|
||
burst_limit.window_time = 1s
|
||
}
|
||
|
||
##----------------------------------------------------------------
|
||
## The file log handlers send log messages to files
|
||
##----------------------------------------------------------------
|
||
## file_handlers.<name>
|
||
file_handlers.default {
|
||
## The log level filter of this handler
|
||
## All the log messages with levels lower than this level will
|
||
## be dropped.
|
||
##
|
||
## @doc log.file_handlers.<name>.level
|
||
## ValueType: debug | info | notice | warning | error | critical | alert | emergency
|
||
## Default: warning
|
||
level = warning
|
||
|
||
## The log file for specified level.
|
||
##
|
||
## If `rotation` is disabled, this is the file of the log files.
|
||
##
|
||
## If `rotation` is enabled, this is the base name of the files.
|
||
## Each file in a rotated log is named <base_name>.N, where N is an integer.
|
||
##
|
||
## Note: Log files for a specific log level will only contain all the logs
|
||
## that higher than or equal to that level
|
||
##
|
||
## @doc log.file_handlers.<name>.file
|
||
## ValueType: File
|
||
## Required: true
|
||
file = "{{ platform_log_dir }}/emqx.log"
|
||
|
||
## Enables the log rotation.
|
||
## With this enabled, new log files will be created when the current
|
||
## log file is full, max to `rotation_count` files will be created.
|
||
##
|
||
## @doc log.file_handlers.<name>.rotation.enable
|
||
## ValueType: Boolean
|
||
## Default: true
|
||
rotation.enable = true
|
||
|
||
## Maximum rotation count of log files.
|
||
##
|
||
## @doc log.file_handlers.<name>.rotation.count
|
||
## ValueType: Integer
|
||
## Range: [1, 2048]
|
||
## Default: 10
|
||
rotation.count = 10
|
||
|
||
## Maximum size of each log file.
|
||
##
|
||
## If the max_size reached and `rotation` is disabled, the handler
|
||
## will stop sending log messages, if the `rotation` is enabled,
|
||
## the file rotates.
|
||
##
|
||
## @doc log.file_handlers.<name>.max_size
|
||
## ValueType: Size | infinity
|
||
## Default: 10MB
|
||
max_size = 10MB
|
||
|
||
## Timezone offset to display in logs
|
||
##
|
||
## @doc log.file_handlers.<name>.time_offset
|
||
## ValueType: system | utc | String
|
||
## - "system" use system zone
|
||
## - "utc" for Universal Coordinated Time (UTC)
|
||
## - "+hh:mm" or "-hh:mm" for a specified offset
|
||
## Default: system
|
||
time_offset = system
|
||
|
||
## Limits the total number of characters printed for each log event.
|
||
##
|
||
## @doc log.file_handlers.<name>.chars_limit
|
||
## ValueType: unlimited | Integer
|
||
## Range: [0, +Inf)
|
||
## Default: unlimited
|
||
chars_limit = unlimited
|
||
|
||
## Maximum depth for Erlang term log formatting
|
||
## and Erlang process message queue inspection.
|
||
##
|
||
## @doc log.file_handlers.<name>.max_depth
|
||
## ValueType: unlimited | Integer
|
||
## Default: 100
|
||
max_depth = 100
|
||
|
||
## Log formatter
|
||
## @doc log.file_handlers.<name>.formatter
|
||
## ValueType: text | json
|
||
## Default: text
|
||
formatter = text
|
||
|
||
## Log to single line
|
||
## @doc log.file_handlers.<name>.single_line
|
||
## ValueType: Boolean
|
||
## Default: true
|
||
single_line = true
|
||
|
||
## The max allowed queue length before switching to sync mode.
|
||
##
|
||
## Log overload protection parameter. If the message queue grows
|
||
## larger than this value the handler switches from anync to sync mode.
|
||
##
|
||
## @doc log.file_handlers.<name>.sync_mode_qlen
|
||
## ValueType: Integer
|
||
## Range: [0, ${log.file_handlers.<name>.drop_mode_qlen}]
|
||
## Default: 100
|
||
sync_mode_qlen = 100
|
||
|
||
## The max allowed queue length before switching to drop mode.
|
||
##
|
||
## Log overload protection parameter. When the message queue grows
|
||
## larger than this threshold, the handler switches to a mode in which
|
||
## it drops all new events that senders want to log.
|
||
##
|
||
## @doc log.file_handlers.<name>.drop_mode_qlen
|
||
## ValueType: Integer
|
||
## Range: [${log.file_handlers.<name>.sync_mode_qlen}, ${log.file_handlers.<name>.flush_qlen}]
|
||
## Default: 3000
|
||
drop_mode_qlen = 3000
|
||
|
||
## The max allowed queue length before switching to flush mode.
|
||
##
|
||
## Log overload protection parameter. If the length of the message queue
|
||
## grows larger than this threshold, a flush (delete) operation takes place.
|
||
## To flush events, the handler discards the messages in the message queue
|
||
## by receiving them in a loop without logging.
|
||
##
|
||
## @doc log.file_handlers.<name>.flush_qlen
|
||
## ValueType: Integer
|
||
## Range: [${log.file_handlers.<name>.drop_mode_qlen}, infinity)
|
||
## Default: 8000
|
||
flush_qlen = 8000
|
||
|
||
## Kill the log handler when it gets overloaded.
|
||
##
|
||
## Log overload protection parameter. It is possible that a handler,
|
||
## even if it can successfully manage peaks of high load without crashing,
|
||
## can build up a large message queue, or use a large amount of memory.
|
||
## We could kill the log handler in these cases and restart it after a
|
||
## few seconds.
|
||
##
|
||
## @doc log.file_handlers.<name>.overload_kill.enable
|
||
## ValueType: Boolean
|
||
## Default: true
|
||
overload_kill.enable = true
|
||
|
||
## The max allowed queue length before killing the log hanlder.
|
||
##
|
||
## Log overload protection parameter. This is the maximum allowed queue
|
||
## length. If the message queue grows larger than this, the handler
|
||
## process is terminated.
|
||
##
|
||
## @doc log.file_handlers.<name>.overload_kill.qlen
|
||
## ValueType: Integer
|
||
## Range: [0, 1048576]
|
||
## Default: 20000
|
||
overload_kill.qlen = 20000
|
||
|
||
## The max allowed memory size before killing the log hanlder.
|
||
##
|
||
## Log overload protection parameter. This is the maximum memory size
|
||
## that the handler process is allowed to use. If the handler grows
|
||
## larger than this, the process is terminated.
|
||
##
|
||
## @doc log.file_handlers.<name>.overload_kill.mem_size
|
||
## ValueType: Size
|
||
## Default: 30MB
|
||
overload_kill.mem_size = 30MB
|
||
|
||
## Restart the log hanlder after some seconds.
|
||
##
|
||
## Log overload protection parameter. If the handler is terminated,
|
||
## it restarts automatically after a delay specified in seconds.
|
||
##
|
||
## @doc log.file_handlers.<name>.overload_kill.restart_after
|
||
## ValueType: Duration
|
||
## Default: 5s
|
||
overload_kill.restart_after = 5s
|
||
|
||
## Controlling Bursts of Log Requests.
|
||
##
|
||
## Log overload protection parameter. Large bursts of log events - many
|
||
## events received by the handler under a short period of time - can
|
||
## potentially cause problems. By specifying the maximum number of events
|
||
## to be handled within a certain time frame, the handler can avoid
|
||
## choking the log with massive amounts of printouts.
|
||
##
|
||
## Note that there would be no warning if any messages were
|
||
## dropped because of burst control.
|
||
##
|
||
## @doc log.file_handlers.<name>.burst_limit.enable
|
||
## ValueType: Boolean
|
||
## Default: false
|
||
burst_limit.enable = false
|
||
|
||
## This config controls the maximum number of events to handle within
|
||
## a time frame. After the limit is reached, successive events are
|
||
## dropped until the end of the time frame defined by `window_time`.
|
||
##
|
||
## @doc log.file_handlers.<name>.burst_limit.max_count
|
||
## ValueType: Integer
|
||
## Default: 10000
|
||
burst_limit.max_count = 10000
|
||
|
||
## See the previous description of burst_limit_max_count.
|
||
##
|
||
## @doc log.file_handlers.<name>.burst_limit.window_time
|
||
## ValueType: duration
|
||
## Default: 1s
|
||
burst_limit.window_time = 1s
|
||
}
|
||
}
|
||
|
||
##==================================================================
|
||
## RPC
|
||
##==================================================================
|
||
rpc {
|
||
## RPC Mode.
|
||
##
|
||
## @doc rpc.mode
|
||
## ValueType: sync | async
|
||
## Default: async
|
||
mode = async
|
||
|
||
## Max batch size of async RPC requests.
|
||
##
|
||
## NOTE: RPC batch won't work when rpc.mode = sync
|
||
## Zero value disables rpc batching.
|
||
##
|
||
## @doc rpc.async_batch_size
|
||
## ValueType: Integer
|
||
## Range: [0, 1048576]
|
||
## Default: 0
|
||
async_batch_size = 256
|
||
|
||
## RPC port discovery
|
||
##
|
||
## The strategy for discovering the RPC listening port of
|
||
## other nodes.
|
||
##
|
||
## @doc cluster.discovery_strategy
|
||
## ValueType: manual | stateless
|
||
## - manual: discover ports by `tcp_server_port`.
|
||
## - stateless: discover ports in a stateless manner.
|
||
## If node name is `emqx<N>@127.0.0.1`, where the `<N>` is
|
||
## an integer, then the listening port will be `5370 + <N>`
|
||
##
|
||
## Default: `stateless`.
|
||
port_discovery = stateless
|
||
|
||
## TCP server port for RPC.
|
||
##
|
||
## Only takes effect when `rpc.port_discovery` = `manual`.
|
||
##
|
||
## @doc rpc.tcp_server_port
|
||
## ValueType: Integer
|
||
## Range: [1024-65535]
|
||
## Defaults: 5369
|
||
tcp_server_port = 5369
|
||
|
||
## Number of outgoing RPC connections.
|
||
##
|
||
## Set this to 1 to keep the message order sent from the same
|
||
## client.
|
||
##
|
||
## @doc rpc.tcp_client_num
|
||
## ValueType: Integer
|
||
## Range: [1, 256]
|
||
## Defaults: 1
|
||
tcp_client_num = 1
|
||
|
||
## RCP Client connect timeout.
|
||
##
|
||
## @doc rpc.connect_timeout
|
||
## ValueType: Duration
|
||
## Default: 5s
|
||
connect_timeout = 5s
|
||
|
||
## TCP send timeout of RPC client and server.
|
||
##
|
||
## @doc rpc.send_timeout
|
||
## ValueType: Duration
|
||
## Default: 5s
|
||
send_timeout = 5s
|
||
|
||
## Authentication timeout
|
||
##
|
||
## @doc rpc.authentication_timeout
|
||
## ValueType: Duration
|
||
## Default: 5s
|
||
authentication_timeout = 5s
|
||
|
||
## Default receive timeout for call() functions
|
||
##
|
||
## @doc rpc.call_receive_timeout
|
||
## ValueType: Duration
|
||
## Default: 15s
|
||
call_receive_timeout = 15s
|
||
|
||
## Socket idle keepalive.
|
||
##
|
||
## @doc rpc.socket_keepalive_idle
|
||
## ValueType: Duration
|
||
## Default: 900s
|
||
socket_keepalive_idle = 900s
|
||
|
||
## TCP Keepalive probes interval.
|
||
##
|
||
## @doc rpc.socket_keepalive_interval
|
||
## ValueType: Duration
|
||
## Default: 75s
|
||
socket_keepalive_interval = 75s
|
||
|
||
## Probes lost to close the connection
|
||
##
|
||
## @doc rpc.socket_keepalive_count
|
||
## ValueType: Integer
|
||
## Default: 9
|
||
socket_keepalive_count = 9
|
||
|
||
## Size of TCP send buffer.
|
||
##
|
||
## @doc rpc.socket_sndbuf
|
||
## ValueType: Size
|
||
## Default: 1MB
|
||
socket_sndbuf = 1MB
|
||
|
||
## Size of TCP receive buffer.
|
||
##
|
||
## @doc rpc.socket_recbuf
|
||
## ValueType: Size
|
||
## Default: 1MB
|
||
socket_recbuf = 1MB
|
||
|
||
## Size of user-level software socket buffer.
|
||
##
|
||
## @doc rpc.socket_buffer
|
||
## ValueType: Size
|
||
## Default: 1MB
|
||
socket_buffer = 1MB
|
||
}
|