
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像为 EMQX 消息服务器的 Docker 封装,基于 debian:10-slim 构建,由 waljqiang 维护。EMQX 是一款开源的 MQTT 消息服务器,支持高并发连接和多种消息传输协议,适用于物联网设备通信、实时数据传输等场景,提供 Web 管理界面和丰富的系统调优选项。
| 端口 | 协议/用途 |
|---|---|
| 1883 | mqtt:tcp |
| 8081 | http:management |
| 8083 | mqtt:ws |
| 8084 | mqtt:wss |
| 8883 | mqtt:ssl |
| *** | mqtt:tcp(内部端口) |
| *** | dashboard(管理界面) |
| 4369 | epmd(Erlang 分布式端口映射守护进程,已弃用) |
| 4370 | 默认 Erlang 分布式端口 |
| 5369 | gen_rpc 端口映射 |
| 6369 | 分布式节点 |
| 6370 | 分布式节点 |
admin/publicbashdocker run --name test -d -p 18083:18083 docker.xuanyuan.run/waljqiang/emqx:${tag}
说明:将
${tag}替换为具体版本标签,如4.0.0。
为确保 EMQX 服务性能,需进行以下系统调优:
系统全局允许分配的最大文件句柄数
bashsysctl -w fs.file-max=2097152 sysctl -w fs.nr_open=2097152 echo 2097152 > /proc/sys/fs/nr_open
允许当前会话/进程打开文件句柄数
bashulimit -n 1048576
持久化 fs.file-max 设置到 /etc/sysctl.conf 文件
bashecho "fs.file-max = 1048576" >> /etc/sysctl.conf
/etc/systemd/system.conf 设置服务最大文件句柄数
bashecho "DefaultLimitNOFILE=1048576" >> /etc/systemd/system.conf
/etc/security/limits.conf 持久化设置允许用户/进程打开文件句柄数
bashecho -e "* soft nofile 1048576\n* hard nofile 1048576" >> /etc/security/limits.conf
TCP 协议栈网络参数
并发连接 backlog 设置
bashsysctl -w net.core.somaxconn=32768 sysctl -w net.ipv4.tcp_max_syn_backlog=16384 sysctl -w net.core.netdev_max_backlog=16384
可用知名端口范围
bashsysctl -w net.ipv4.ip_local_port_range='1000 65535'
TCP Socket 读写 Buffer 设置
bashsysctl -w net.core.rmem_default=262144 sysctl -w net.core.wmem_default=262144 sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216 sysctl -w net.core.optmem_max=16777216 sysctl -w net.ipv4.tcp_rmem='1024 4096 16777216' sysctl -w net.ipv4.tcp_wmem='1024 4096 16777216'
TCP 连接追踪设置
bashsysctl -w net.netfilter.nf_conntrack_max=1000000 sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30
TIME-WAIT Socket 最大数量、回收与重用设置
bashsysctl -w net.ipv4.tcp_max_tw_buckets=1048576 # 注意:不建议开启以下设置,NAT 模式下可能引起连接 RST # sysctl -w net.ipv4.tcp_tw_recycle=1 # sysctl -w net.ipv4.tcp_tw_reuse=1
FIN-WAIT-2 Socket 超时设置
bashsysctl -w net.ipv4.tcp_fin_timeout=15
Erlang 虚拟机参数
优化设置 Erlang 虚拟机启动参数,修改配置文件 emqx/etc/emqx.conf:
ini## Erlang Process Limit node.process_limit = 2097152 ## Sets the maximum number of simultaneously existing ports for this system node.max_ports = 1048576
Docker 参数调优
bashdocker run -d --name emqx -p 18083:18083 -p 1883:1883 -p 4369:4369 \ --sysctl fs.file-max=2097152 \ --sysctl fs.nr_open=2097152 \ --sysctl net.core.somaxconn=32768 \ --sysctl net.ipv4.tcp_max_syn_backlog=16384 \ --sysctl net.core.netdev_max_backlog=16384 \ --sysctl net.ipv4.ip_local_port_range=1000 65535 \ --sysctl net.core.rmem_default=262144 \ --sysctl net.core.wmem_default=262144 \ --sysctl net.core.rmem_max=16777216 \ --sysctl net.core.wmem_max=16777216 \ --sysctl net.core.optmem_max=16777216 \ --sysctl net.ipv4.tcp_rmem=1024 4096 16777216 \ --sysctl net.ipv4.tcp_wmem=1024 4096 16777216 \ --sysctl net.ipv4.tcp_max_tw_buckets=1048576 \ --sysctl net.ipv4.tcp_fin_timeout=15 \ emqx/emqx:4.0.0
友情提示:不要使用
--privileged或者将系统内核目录挂载到 Docker 中进行调优。
修改 emqx/etc/emqx.conf 或 emqx/etc/listeners.conf 配置文件,调整 acceptor 池大小和最大允许连接数:
ini## TCP Listener listener.tcp.external = 0.0.0.0:1883 listener.tcp.external.acceptors = 64 listener.tcp.external.max_connections = 1024000
测试客户端服务器在一个接口上最多只能创建 65000 连接,需进行以下设置:
bashsysctl -w net.ipv4.ip_local_port_range="500 65535" echo 1000000 > /proc/sys/fs/nr_open ulimit -n 100000
tag->release 可找到编译好的包。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 waljqiang/emqx 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: