RustDesk性能调优与延迟优化:自建服务器实战指南
RustDesk为什么会卡?原因排查清单
很多用户部署RustDesk后感觉“比TeamViewer还慢”,其实不是RustDesk本身的问题,而是配置不当导致的。本文从底层到上层,系统讲清楚RustDesk性能调优的方法。
卡顿的常见原因(从高频到低频)
- 使用了RustDesk官方免费服务器(国内连接质量差)
- 未启用硬件编码(CPU编码软压慢)
- 网络带宽不足(尤其上行带宽)
- 局域网NAT穿透失败,被迫走中继
- 被控端硬件太弱(如远程树莓派)
- 防火墙/安全软件拦截QoS
- 显示器分辨率过高(4K远程带宽需求极大)
- TLS密钥协商拖慢(首次连接)
按从易到难顺序,本文给出每一项的优化办法。
客户端基础调优(所有人必做)
设置一:启用硬件编码
RustDesk默认会根据硬件自动选择编码器,但很多机器上自动选择失败。手动指定:
设置 → 显示 → 视频编码器 → 硬件 (H264/H265)
| 显卡 | 推荐编码器 | 备注 |
|---|---|---|
| NVIDIA | H264 NVENC | 几乎所有N卡都支持 |
| AMD/Intel核显 | H264 AMF / H264 QSV | 注意驱动版本 |
| 苹果M系列 | H264/H265 VTB | Metal加速 |
| 无独显 | 默认 VP9 / VP8 | 软件编码,慢但能用 |
实测效果:
- 1080p 30fps NVENC编码:CPU占用 5-8%
- 1080p 30fps 软件编码:CPU占用 35-50%
- 4K 60fps NVENC编码:CPU占用 10-15%
硬件编码提速3-5倍,效果立竿见影。
设置二:调整色彩和帧率
远程桌面对色彩的要求通常不需要本地那么高:
设置 → 显示 → 色彩深度 → YUV444 (32位) 改为 YUV420 (12位)
设置 → 显示 → FPS → 限制到 30fps (除非做视频/设计)
色彩降一档、画面帧率降一档,带宽可省 50% 以上。
设置三:关闭不必要的图像增强
设置 → 显示 → 图像质量 → 标准 (默认) 不需要改
设置 → 显示 → 像素化 → 关闭 (像素化过强会卡)
如果是为了流畅,适度降低画质远比升级网络便宜。
设置四:剪贴板、文件传输优化
设置 → 高级 → 剪贴板同步 → 仅启用文本 (图片文件传输单独进行)
剪贴板如果频繁传输图片或大文件,会抢占远程连接的带宽。
自建hbbs服务器优化(进阶必做)
官方RustDesk服务器在国内连接质量很差(延迟200ms+),自建RustDesk Server是性能优化的关键一步。
部署架构
RustDesk Server有两个核心组件:
- hbbs:ID注册服务器+中继协调(必须)
- hbbr :中继服务器(可选,但强烈建议)
部署配置
# docker-compose.yml 性能调优版
version: '3'
services:
hbbs:
container_name: rustdesk-hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r <your-server-ip-or-domain>:21117
ports:
- "21115:21115" # WebSocket
- "21116:21116/tcp" # ID注册
- "21116:21116/udp" # 心跳
- "21118:21118" # WebSocket TLS
volumes:
- ./hbbs-data:/root
restart: always
# 性能调优:限制CPU/内存防止OOM
deploy:
resources:
limits:
cpus: '1.5'
memory: 512M
hbbr:
container_name: rustdesk-hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
ports:
- "21117:21117/tcp" # 中继
- "21117:21117/udp" # 中继
restart: always
deploy:
resources:
limits:
cpus: '1.5'
memory: 512M
hbbs/hbbr的高级配置参数
hbbs常用参数
| 参数 | 默认 | 推荐 | 说明 |
|---|---|---|---|
-k |
- | 必设 | 加密密钥,客户端需配 |
-r |
- | 必填 | 注册服务器地址 |
--mask |
默认 | 优化时调 | 网段掩码 |
-p |
21116 | 可改 | 自定义注册端口 |
关键环境变量调优
# /etc/environment or docker-compose environment
RUST_LOG=warn # 减少日志IO
# 国内网络环境,可考虑开启压缩
RUSTDESK_USE_ZSTD=1
系统级优化
修改 /etc/sysctl.conf:
# 增加UDP缓冲区
net.core.rmem_max=26214400
net.core.wmem_max=26214400
net.ipv4.udp_mem=102400 873800 16777200
net.ipv4.udp_rmem_min=8192
net.ipv4.udp_wmem_min=8192
# TCP缓冲区
net.ipv4.tcp_rmem=4096 87380 6291456
net.ipv4.tcp_wmem=4096 65536 6291456
# 减少TIME_WAIT
net.ipv4.tcp_fin_timeout=15
net.ipv4.tcp_tw_reuse=1
sysctl -p
客户端指向自建服务器
在客户端的ID/中继服务器配置:
ID服务器: <your-server-ip-or-domain>
中继服务器: <your-server-ip-or-domain>
Key: <从hbbs-data目录下id_ed25519.pub读取公钥>
网络层面的优化(高级)
优化一:开启BBR拥塞控制
Linux 4.9+内核支持BBR,对远程桌面这种长肥管道非常有效:
# 检查当前拥塞控制算法
sysctl net.ipv4.tcp_congestion_control
# 临时启用
sysctl -w net.ipv4.tcp_congestion_control=bbr
# 永久启用
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
# 验证
sysctl net.ipv4.tcp_congestion_control
lsmod | grep bbr
BBR对比CUBIC在中长距离链路上提速 20-50%。
优化二:多线BGP机房选择
如果你打算正式部署,机房选择至关重要:
| 机房位置 | 国内访问延迟 | 适用 |
|---|---|---|
| 香港 | 10-30ms | 国内用户主要用 |
| 日本/东京 | 50-80ms | 东亚用户 |
| 新加坡 | 60-100ms | 东南亚用户 |
| 美国西海岸 | 150-200ms | 海外华人 |
| 欧洲 | 250-300ms | 欧洲用户 |
国内用户首选香港CN2或CUG线路,CN2的高QoS对实时视频流非常友好。
优化三:专线/VPN专线
对于延迟极度敏感的场景(电竞级远程、设计软件远程),可以考虑:
- 在自建服务器机房与常用客户端机房之间拉SD-WAN专线
- 或者用WireGuard建立低延迟隧道(避开公网传统路由)
- 阿里云、腾讯云的“全球加速”产品对UDP优化做得好
优化四:QoS与队列管理
如果是企业自建,可以对RustDesk的端口做QoS优先调度:
# tc命令示例,网络设备名eth0
# 对RustDesk的UDP 21116/21117端口给予最高优先级
tc qdisc add dev eth0 root handle 1: prio bands 4
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 21116 0xffff flowid 1:1
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 21117 0xffff flowid 1:1
被控端硬件优化
检查被控端CPU负载
# Windows
Get-Counter '\Processor(_Total)\% Processor Time'
# 任务管理器 → 性能 → CPU → 观察RustDesk进程占用
如果RustDesk进程CPU占用 > 30%,通常是软件编码或频繁截图。建议:
- 启用NVENC(性能→编码器)
- 关闭被控端的屏幕保护(避免RustDesk每隔几秒重新检测显示模式)
- 不要在被控端跑大任务(编译、转码)时远程
显示器多开与分辨率
4K显示器远程起来非常吃带宽:
- 在被控端的RustDesk中缩放显示:可以在“显示设置”里把分辨率调成1080p
- 多显示器:不建议同时远程4屏,先远程主屏,需要时再切
设置 → 显示 → 多显示器 → 单显示器模式
剪贴板和文件传输
设置 → 高级 → 关闭剪贴板自动同步 (需要时才打开)
设置 → 文件传输 → 限制单文件大小到 200MB
剪贴板图片同步会抢带宽,关闭自动同步改用手动同步能省 20-30% 带宽。
网络质量监控工具
服务端监控
# 用iftop监控hbbs/hbbr网络流量
docker exec rustdesk-hbbs iftop -i eth0
# 实时延迟测试
ping <server-ip>
# 用tcpping持续观察特定端口
tcping <server-ip> 21117
客户端连接质量检查
RustDesk 1.2.0+提供了连接质量面板:
设置 → 网络 → 显示连接信息- 查看实际带宽、丢包率、当前编码器
- 看到丢包率 > 1% 说明网络有问题
常见性能问题FAQ
Q:启用了NVENC但还是卡,为什么?
可能的原因:
- 显卡驱动版本太老,NVENC效率低
- 被控端有其他高CPU占用的进程
- 设置中“色彩模式”仍是YUV444(高带宽)
- 检查
设置 → 显示 → 帧率:30fps以上会显著增加带宽
Q:RustDesk服务器CPU占用高怎么排查?
docker stats
top
# 看hbbs/hbbr进程占用
常见原因:
- 连接数过多(单服务器100+并发可能成为瓶颈)
- 日志级别设到debug:
RUST_LOG=debug会频繁IO - 服务器带宽被打满
Q:为什么我看到的中继连接不是P2P?
查看连接信息:
- 直连/P2P连接:RustDesk走UDP直连两端,延迟最低
- 中继连接:UDP不通,被迫走服务器中继,延迟 + 服务器RTT
如果一直是中继连接,检查:
- 两端是否都在NAT后面
- 路由器是否封禁了UDP
- 防火墙是否拦截了 UDP 21116-21117
Q:RustDesk带宽占用高,能否压缩?
可以做:
- 降低色彩深度:YUV444 → YUV420
- 降低帧率:30 → 24 fps
- 关闭剪贴板同步
- 启用ZSTD压缩(实验性):
RUSTDESK_USE_ZSTD=1
但会损失画质,需要权衡。
Q:用RustDesk做设计(图形软件)卡顿严重,怎么办?
设计场景需要高质量画面对色彩要求高,几个针对性建议:
- 绝不要压色彩:设计需要YUV444
- 提高分辨率但降低帧率:设计软件本身就低帧,30fps够用
- 考虑单独买硬件加速GPU:对老电脑升级显卡比升级网络更划算
- 使用本地KVM/IP KVM方案:对于超低延迟设计需求,软件远程不够用
性能优化的体系化建议
对于希望“榨干RustDesk性能”的用户,推荐组合拳:
第一档:基础优化(5分钟)
- 启用硬件编码
- 调低色彩与帧率
- 关闭多余的剪贴板和文件同步
第二档:网络优化(30分钟)
- 自建hbbs+hbbr(关键)
- 部署到香港/日本低延迟机房
- 启用BBR
第三档:深度优化(2-4小时)
- 多线BGP+CDN加速
- 系统层QoS
- TCP/UDP缓冲区优化
第四档:终极优化(企业级)
- 专线/SD-WAN
- 自定义协议封装
- 专用代理网关
大多数个人/中小团队做到第二档,体验就已经很好。第三档以上性价比开始下降。
总结:RustDesk性能优化是一个系统工程
RustDesk的开源特性使其在性能调优上有极大自由度,但也意味着“默认配置不一定是最佳”。本文列出的每一项优化都是经过社区验证有效的。
如果只能选一项优化,部署自建hbbs+hbbr是投入产出比最高的选择。这一项改动,就能把“国内远程延迟300ms”优化到“延迟50ms”,体验差距肉眼可见。
测速对比表(优化前 → 优化后):
| 场景 | 优化前 | 优化后 | 提升 |
|---|---|---|---|
| 国内连官方服务器 | 250ms | - | - |
| 国内连自建香港 | - | 30-80ms | -70% |
| 软件编码 | 35% CPU | - | - |
| 硬件编码 | - | 5-8% CPU | -77% |
| 默认色彩/帧率 | 8Mbps | - | - |
| 调低色彩/帧率 | - | 2-3Mbps | -65% |
性能优化是无止境的,但“够用就行”——通常做到第二档就已经能流畅玩游戏、看视频、远程办公了。如果还有性能问题,欢迎在评论区讨论具体场景。
这篇教程有帮助吗?立即下载RustDesk 中文网试试吧!
全平台支持 · 安全无毒 · 官方最新版