Files

6.6 KiB
Raw Permalink Blame History

noVNC + macOS 虚拟机流畅度优化指南

适用于:存客宝 NAS8GB 内存)上的 dockurr/macos 虚拟机,通过 noVNC (open.quwanzhi.com:8007) 远程操作。


一、问题成因简析

环节 可能瓶颈
NAS 硬件 8GB 内存macOS VM 仅 3GBQEMU 渲染+noVNC 编码占 CPU
网络 外网 frpc 穿透增加延迟VNC 全帧传输带宽高
VNC 协议 无硬件加速,高分辨率+高色彩深度导致数据量大
浏览器 多标签占用内存WebSocket 解码消耗 CPU

二、优化方案总览

优先级

  1. 立即可做(无需重启 VMnoVNC URL 参数、浏览器优化、优先用内网
  2. 需重启 VM:修改 docker-compose、macOS 内系统设置
  3. 一次性配置macOS 内运行 osx-optimizer 脚本

三、立即可做0 成本)

1. 使用优化后的 noVNC 访问 URL

原地址http://open.quwanzhi.com:8007
优化后(降低画质换流畅):

http://open.quwanzhi.com:8007/?qualityLevel=3&compressionLevel=6&resize=scale
参数 含义 推荐值
qualityLevel JPEG 画质 09越低越省带宽 3 或 4
compressionLevel 压缩强度 09越高越省带宽、越耗 CPU 56
resize 缩放模式 scale(适应窗口)

更激进(最流畅优先)

http://open.quwanzhi.com:8007/?qualityLevel=2&compressionLevel=7&resize=scale

2. 优先用内网直连(跳过 frpc

若 MacBook 与 NAS 在同一局域网(如 192.168.1.x

http://192.168.1.201:8007/?qualityLevel=3&compressionLevel=6&resize=scale

可减少外网穿透带来的延迟。

3. 浏览器优化

  • 只开一个 noVNC 标签,关闭其他大页签
  • 使用 Chrome,并开启硬件加速:设置 → 系统 → 使用硬件加速
  • 无痕/独立窗口打开 noVNC减少扩展和插件干扰

四、NAS / Docker 配置优化

1. 更新 macos-vm 的 docker-compose

编辑 /volume1/docker/macos-vm/docker-compose.yml

version: "3.8"
services:
  macos:
    image: dockurr/macos
    container_name: macos-vm
    environment:
      - VERSION=ventura
      - RAM_SIZE=4G              # 3G→4GNAS 有余量时)
      - CPU_CORES=2              # 1核→2核
      - DISK_SIZE=64G
      # 以下为可选,部分 dockurr 版本支持
      - DISPLAY_WIDTH=1280       # 降低默认分辨率
      - DISPLAY_HEIGHT=720
    ports:
      - "8007:8006"
      - "5901:5900"
    volumes:
      - /volume1/vm/macos:/storage
    devices:
      - /dev/kvm
    cap_add:
      - NET_ADMIN
    restart: "no"
    deploy:
      resources:
        limits:
          memory: 4500M

注意DISPLAY_WIDTH/DISPLAY_HEIGHT 若镜像不支持可删除;优先保证 CPU_CORES=2RAM_SIZE=4G

2. 应用并重启 VM

方式 A在 NAS 上直接执行(外网时推荐)

  1. SSH 登录 CKB NAS

    • 内网ssh fnvtk@192.168.1.201(需加 -o KexAlgorithms=+diffie-hellman-group1-sha1 -o Ciphers=+aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
    • 外网:若有 frpc 暴露 SSH或通过 Tailscale/QuickConnect VPN 后同上
  2. 将脚本传到 NAS 或从 Gitea 克隆卡若AI 后,执行:

    cd /volume1/docker/macos-vm
    # 若脚本在 SynologyDrive/卡若AI 或 Gitea 克隆目录,先复制过来:
    # cp /path/to/optimize_macos_vm_on_nas.sh /volume1/docker/macos-vm/
    chmod +x optimize_macos_vm_on_nas.sh
    ./optimize_macos_vm_on_nas.sh
    
  3. 一行命令(直接粘贴到 NAS 终端):

    cd /volume1/docker/macos-vm && cp docker-compose.yml docker-compose.yml.bak.$(date +%Y%m%d) 2>/dev/null; cat > docker-compose.yml << 'EOF'
    version: "3.8"
    services:
      macos:
        image: dockurr/macos
        container_name: macos-vm
        environment:
          - VERSION=ventura
          - RAM_SIZE=4G
          - CPU_CORES=2
          - DISK_SIZE=64G
        ports:
          - "8007:8006"
          - "5901:5900"
        volumes:
          - /volume1/vm/macos:/storage
        devices:
          - /dev/kvm
        cap_add:
          - NET_ADMIN
        restart: "no"
        deploy:
          resources:
            limits:
              memory: 4500M
    EOF
    echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose down 2>/dev/null; sleep 2; echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose up -d && echo "✅ 完成"
    

方式 B从本机 SSH 到 NAS 执行(需与 NAS 同网或可 SSH 访问)

ssh nas "cd /volume1/docker/macos-vm && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose down"
ssh nas "cd /volume1/docker/macos-vm && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose up -d"

五、macOS 虚拟机内部优化

连接 noVNC 后,在 macOS 终端执行(需管理员密码):

1. 关闭 Spotlight 索引(显著减轻 I/O

sudo mdutil -i off -a

2. 减少动画与透明(减轻渲染压力)

defaults write com.apple.Accessibility ReduceMotionEnabled -int 1
defaults write com.apple.universalaccess reduceMotion -int 1
defaults write com.apple.universalaccess reduceTransparency -int 1

3. 降低显示器分辨率

系统设置 → 显示器 → 分辨率 → 选择 1280×7201366×768

4. 关闭不必要后台

  • 系统设置 → 通用 → 登录项:移除不需要开机自启的应用
  • 活动监视器中结束占用高的非必要进程

六、外网访问优化frpc

若必须用 open.quwanzhi.com:8007

  • 确认 frpc 服务端带宽与延迟正常
  • 使用有线或 5GHz WiFi避免弱信号
  • 可考虑 Tailscale/ZeroTier 等组网,替代端口映射

七、预期效果

优化项 预期改善
qualityLevel=3 + compressionLevel=6 延迟和卡顿明显下降
内网直连 延迟可再降 50100ms
CPU 2核 + RAM 4G 多任务、窗口切换更顺
关闭 Spotlight + 降分辨率 减少 I/O 和渲染负担

八、若仍卡顿

  1. 确认 NAS 资源ssh nas "free -h && uptime",查看内存和负载
  2. 确认 VM 占用ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker stats --no-stream"
  3. 尝试原生 VNC 客户端(如 RealVNC、TigerVNC连接 vnc://IP:5901,对比 noVNC 是否更卡
  4. 升级 NAS 内存DS1825+ 支持扩展到 32GB可显著改善

更新2026-02-16 | 归属:金仓 · 群晖NAS管理