Docker Macvlan容器视频推流遇连接重置问题求助
问题分析与解决方案:Macvlan容器中Mistserver高码率推流连接重置
环境配置
你的当前环境配置如下:
创建macvlan网络:
docker network create -d macvlan \ --subnet=192.168.1.0/24 \ --gateway=192.168.1.1 \ -o parent=eno1 \ macvlan_network
启动Mistserver容器:
docker run -d --name mistserver1 --restart=always -v mistserver_config:/config -v /home/ketivrar/detr2:/home/shared_folder --net=macvlan_network --ip 192.168.1.16 r0gger/mistserver
核心问题
容器内视频本地播放正常,但高码率RTMP推流(≥5000k)或多流推流时,触发Connection reset by peer错误中断;低码率(4000k)推流可正常完成,OBS推流也存在频繁断连重连现象。
可能原因
- Macvlan网络MTU限制:默认MTU继承物理网卡,若物理网卡MTU偏小(如默认1500),高码率传输时数据包分片频繁,易引发丢包导致连接重置。
- Mistserver默认配置限制:镜像自带的RTMP输入缓冲区或码率阈值设置过低,无法承载高码流流量。
- Docker网络缓冲区不足:Docker默认网络栈的收发缓冲区大小有限,高码率流量超出缓冲区承载能力时,内核会主动重置连接。
解决方案
1. 调整Macvlan网络MTU值
先查看物理网卡eno1的MTU:
ip link show eno1
若网络支持巨帧(多数局域网可支持),删除原有macvlan并创建带大MTU的新网络:
docker network rm macvlan_network docker network create -d macvlan \ --subnet=192.168.1.0/24 \ --gateway=192.168.1.1 \ -o parent=eno1 \ -o mtu=9000 \ macvlan_network
重启Mistserver容器:
docker restart mistserver1
2. 调整Mistserver RTMP配置
访问Mistserver管理界面(http://192.168.1.16:4242):
- 找到RTMP服务配置项,将输入缓冲区大小调高至64M或更高;
- 检查并关闭单流码率强制限制选项;
- 保存配置后重启Mistserver服务。
3. 增大Docker容器网络缓冲区
停止并删除原有容器,添加网络缓冲区参数重新启动:
docker stop mistserver1 && docker rm mistserver1 docker run -d --name mistserver1 --restart=always \ -v mistserver_config:/config \ -v /home/ketivrar/detr2:/home/shared_folder \ --net=macvlan_network --ip 192.168.1.16 \ --sysctl net.core.rmem_max=268435456 \ --sysctl net.core.wmem_max=268435456 \ --sysctl net.core.rmem_default=134217728 \ --sysctl net.core.wmem_default=134217728 \ r0gger/mistserver
以上参数将网络缓冲区最大值设为256M,默认值设为128M,足以承载高码率流量。
4. 验证测试
重新用高码率和多流推流验证:
ffmpeg -re -i test7_10.mp4 -c:v libx264 -preset medium -b:v 8000k -f flv rtmp://192.168.1.16/live/cam1
同时启动多流推流,观察是否仍出现连接重置错误。
内容的提问来源于stack exchange,提问作者leejh
相关产品推荐
相关产品推荐

