flashmq (1)

A fast light-weight scalable MQTT server

Synopsis

flashmq [-h | --help] [-v | --version] [-l | --license]
     [-c | --config-file config_file_path] [-t | --test-config]

Description

FlashMQ is a MQTT 3.1, 3.1.1 and 5 broker designed to be light-weight and handle millions of clients and/or messages.

Signals

SIGHUP#

Reload config file and reopen log files. Listeners are recreated. Bridge configuration is currently not subject to dynamic configuration change.

SIGUSR1#

Reopen log files. Use this in log rotation.

SIGUSR2#

It has been observed that certain implementations of malloc have a high memory use while still having many free blocks. See for instance the libc mailing list discussion Abnormal memory usage with glibc 2.31 related to thread cache and trimming strategy. This can be exacerbated by continuous thread recreation, because of how "memory arenas" are managed. FlashMQ has a fixed number of threads, but that may not be true for loaded plugins. Sending a SIGUSR2 will cause FlashMQ to call 'malloc_trim(0)', possibly resulting in it giving memory back to the operating system.

The action is mostly pretty fast, but if not, the main loop will block during the operation, blocking the ability to accept new connections. The worker threads themselves will keep running and keep serving clients.

Use, or need, of this feature on a regular basis is questionable, but at least it can help in a pinch.

Author

Wiebe Cazemier contact@flashmq.org.

See also

flashmq.conf(5) , www.flashmq.org