856 lines
25 KiB
Plaintext
856 lines
25 KiB
Plaintext
## NOTE:
|
|
## Configs in this file might be overridden by:
|
|
## 1. Environment variables which start with 'EMQX_' prefix
|
|
## 2. File $EMQX_NODE__DATA_DIR/configs/cluster-override.conf
|
|
## 3. File $EMQX_NODE__DATA_DIR/configs/local-override.conf
|
|
##
|
|
## The *-override.conf files are overwritten at runtime when changes
|
|
## are made from EMQX dashboard UI, management HTTP API, or CLI.
|
|
|
|
##==================================================================
|
|
## 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 }}"
|
|
|
|
## Location of crash dump file.
|
|
##
|
|
## @doc node.crash_dump_file
|
|
## ValueType: File
|
|
## Default: "{{ platform_log_dir }}/erl_crash.dump"
|
|
crash_dump_file = "{{ platform_log_dir }}/erl_crash.dump"
|
|
|
|
## The number of seconds that the broker is allowed to spend writing
|
|
## a crash dump
|
|
##
|
|
## @doc node.crash_dump_seconds
|
|
## ValueType: seconds
|
|
## Default: 30s
|
|
crash_dump_seconds = 30s
|
|
|
|
## The maximum size of a crash dump file in bytes.
|
|
##
|
|
## @doc node.crash_dump_bytes
|
|
## ValueType: bytes
|
|
## Default: 100MB
|
|
crash_dump_bytes = 100MB
|
|
|
|
## 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 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
|
|
|
|
## Comma-separated list of applications to start with emqx_machine.
|
|
## These applications may restart on cluster leave/join.
|
|
##
|
|
## @doc node.applications
|
|
## ValueType: String
|
|
## Default: "gproc, esockd, ranch, cowboy, emqx"
|
|
applications = "{{ emqx_machine_boot_apps }}"
|
|
|
|
cluster_call {
|
|
retry_interval = 1s
|
|
max_history = 100
|
|
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, separated 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, separated 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
|
|
}
|
|
}
|
|
|
|
##==================================================================
|
|
## Internal database
|
|
##==================================================================
|
|
db {
|
|
## Database backend
|
|
##
|
|
## @doc db.backend
|
|
## ValueType: mnesia | rlog
|
|
## Default: rlog
|
|
backend = rlog
|
|
|
|
## RLOG role
|
|
##
|
|
## @doc db.role
|
|
## ValueType: core | replicant
|
|
## Default: core
|
|
role = core
|
|
|
|
## Replicant core nodes
|
|
##
|
|
## @doc db.core_nodes
|
|
## ValueType: comma-separated node list
|
|
## Default: ""
|
|
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 handler.
|
|
##
|
|
## 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 handler.
|
|
##
|
|
## 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 handler 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 {
|
|
enable = true
|
|
## 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 handler.
|
|
##
|
|
## 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 handler.
|
|
##
|
|
## 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 handler 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: 10
|
|
tcp_client_num = 10
|
|
|
|
## 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
|
|
}
|