性能与安全加固
本文档提供生产环境部署 TMQTT 时的性能调优建议和安全加固清单,帮助你构建稳定、安全的生产系统。
性能优化
操作系统层面
| 优化项 | 建议值 | 说明 |
|---|---|---|
| 文件描述符上限 | 1,048,576 | 每个 MQTT 连接占用一个文件描述符,大规模连接场景必须调高 |
| TCP 缓冲区 | 根据网络条件调整 | TMQTT 默认使用系统默认值,高吞吐场景可适当调大 |
| TCP 保活 | 60 秒 | 及时检测断开的连接,释放资源 |
| 关闭 Nagle 算法 | 启用(默认已启用) | 减少小包延迟 |
TMQTT 配置
| 配置项 | 建议值 | 说明 |
|---|---|---|
listener.tcp.max_connections | 按实际规模设置 | 防止连接数超出系统承载能力 |
session.max_inflight | 32-128 | 根据消息并发需求调整,越大并发确认越多但内存占用越高 |
session.max_packet_size | 按需设置 | 限制单条消息大小,防止恶意超大消息 |
auth.rate_limit.max_connections_per_sec | 50-100 | 限制每秒新建连接数,防止连接风暴 |
auth.rate_limit.max_publish_per_sec | 500-1000 | 限制单客户端发布速率,防止洪泛攻击 |
工作线程数
performance.worker_threads 控制 Tokio 运行时线程数。默认值 0 表示等于 CPU 核心数,一般无需修改。
io_uring 后端(Linux)
在 Linux 上启用 io-uring Feature 后,TMQTT 可使用 Linux io_uring 高性能网络后端,在大规模连接场景下可获得显著的性能提升。
bash
cargo build --release --features io-uring注意:io_uring 仅在 Linux 5.1+ 内核上可用。
安全加固清单
在生产环境部署前,建议逐项检查以下安全措施:
网络安全
- [ ] 仅开放必要端口(1883/8883/8083),不对外暴露管理端口(8080/9090)
- [ ] 启用 TLS 加密通信,禁用明文 TCP 连接
- [ ] 配置防火墙规则,管理 API 仅限内网访问
- [ ] 使用强 TLS 版本(TLS 1.2+),避免使用弱密码套件
认证与授权
- [ ] 关闭匿名连接(
anonymous_allow = false) - [ ] 配置至少一种认证方式(密码/JWT/mTLS)
- [ ] 配置 ACL 规则,限制客户端只能访问必要主题
- [ ] 设置合理的连接速率和发布速率限制
配置安全
- [ ] 为管理 API 配置
auth_token - [ ] 确保配置文件权限受限(仅运行用户可读)
- [ ] 敏感信息(密码、Token)不要硬编码在配置文件中
运行安全
- [ ] 使用非 root 用户运行 TMQTT 进程
- [ ] 配置 systemd 自动重启策略
- [ ] 启用持久化存储(RocksDB),防止数据丢失
- [ ] 定期备份数据目录(如
/var/lib/tmqtt)
监控与告警
- [ ] 启用 Prometheus 指标导出
- [ ] 配置 Grafana 仪表盘
- [ ] 设置关键指标告警(连接数异常增长、认证失败率高、消息丢弃等)
- [ ] 日志接入集中式日志系统(ELK/Loki)
安全事件响应
检测认证暴力破解
监控 tmqtt_auth_failure_total 指标,如果短时间内某 IP 的认证失败次数异常增高,可能正在遭受暴力破解攻击。
响应:
- 确认
rate_limit.max_connections_per_sec已配置 - 在防火墙层面对可疑 IP 临时封禁
- 检查日志确认攻击来源
检测消息洪泛
监控 messages_received_total 的增长速率,异常突增可能表示有客户端在洪泛发送消息。
响应:
- 确认
rate_limit.max_publish_per_sec已配置 - 通过管理 API 踢出可疑客户端:
DELETE /api/v1/sessions/{client_id} - 检查 ACL 规则是否限制了该客户端的主题范围
备份与恢复
数据备份
使用 RocksDB 持久化存储时,需要定期备份以下数据:
- 数据目录(
storage.path配置,默认./data) - 配置文件(
config.toml、密码文件、ACL 规则文件) - TLS 证书和密钥文件
备份方式
RocksDB 支持在线备份,无需停止 TMQTT 进程。可以使用文件系统快照或 rsync 等方式。
恢复
将备份的数据目录和配置文件恢复到对应位置,启动 TMQTT 即可。持久会话和离线消息会自动从 RocksDB 中加载。
Copyright (c) 2026 桃子 TaoZi.Pub https://taozi.pub | MIT License