docs(emqx_machine): Improve README

This commit is contained in:
ieQu1 2023-04-13 22:39:49 +02:00
parent 9acfe00498
commit c5ad3c8f41
1 changed files with 44 additions and 1 deletions

View File

@ -1,5 +1,48 @@
# EMQX Machine # EMQX machine
This application manages other OTP applications in EMQX and serves as the entry point when BEAM VM starts up. This application manages other OTP applications in EMQX and serves as the entry point when BEAM VM starts up.
It prepares the node before starting mnesia/mria, as well as EMQX business logic. It prepares the node before starting mnesia/mria, as well as EMQX business logic.
It keeps track of the business applications storing data in Mnesia, which need to be restarted when the node joins the cluster by registering `ekka` callbacks. It keeps track of the business applications storing data in Mnesia, which need to be restarted when the node joins the cluster by registering `ekka` callbacks.
Also it kicks off autoclustering (EMQX cluster discovery) on the core nodes.
`emqx_machine` application doesn't do much on its own, but it facilitates the environment for running other EMQX applications.
# Features
## Global GC
`emqx_global_gc` is a gen_server that forces garbage collection of all Erlang processes running in the BEAM VM.
This is meant to save the RAM.
## Restricted shell
`emqx_restricted_shell` module prevents user from accidentally issuing Erlang shell commands that can stop the remote node.
## Signal handler
`emqx_machine_signal_handler` handles POSIX signals sent to BEAM VM process.
It helps to shut down EMQX broker gracefully when it receives `SIGTERM` signal.
## Cover
`emqx_cover` is a helper module that helps to collect coverage reports during testing.
# Limitation
Currently `emqx_machine` boots the business apps before starting autocluster, so a fresh node joining the cluster actually starts business application twice: first in the singleton mode, and then in clustered mode.
# Documention links
Configuration: [node.global_gc_interval](https://www.emqx.io/docs/en/v5.0/configuration/configuration-manual.html#node-and-cookie)
# Configurations
The following application environment variables are used:
- `emqx_machine.global_gc_interval`: interval at which global GC is run
- `emqx_machine.custom_shard_transports`: contains a map that allows to fine tune transport (`rpc` or `gen_rpc`) used to send Mria transactions from the core node to the replicant
- `emqx_machine.backtrace_depth`: set maximum depth of Erlang stacktraces in crash reports
# Contributing
Please see our [contributing.md](../../CONTRIBUTING.md).