🔄 卡若AI 重建本地主仓 | 保留有效小文件
This commit is contained in:
223
01_卡资(金)/金仓_存储备份/群晖NAS管理/参考资料/noVNC_macOS_VM流畅度优化.md
Normal file
223
01_卡资(金)/金仓_存储备份/群晖NAS管理/参考资料/noVNC_macOS_VM流畅度优化.md
Normal file
@@ -0,0 +1,223 @@
|
||||
# noVNC + macOS 虚拟机流畅度优化指南
|
||||
|
||||
> 适用于:存客宝 NAS(8GB 内存)上的 dockurr/macos 虚拟机,通过 noVNC (open.quwanzhi.com:8007) 远程操作。
|
||||
|
||||
---
|
||||
|
||||
## 一、问题成因简析
|
||||
|
||||
| 环节 | 可能瓶颈 |
|
||||
|------|----------|
|
||||
| **NAS 硬件** | 8GB 内存,macOS VM 仅 3GB,QEMU 渲染+noVNC 编码占 CPU |
|
||||
| **网络** | 外网 frpc 穿透增加延迟;VNC 全帧传输带宽高 |
|
||||
| **VNC 协议** | 无硬件加速,高分辨率+高色彩深度导致数据量大 |
|
||||
| **浏览器** | 多标签占用内存;WebSocket 解码消耗 CPU |
|
||||
|
||||
---
|
||||
|
||||
## 二、优化方案总览
|
||||
|
||||
### 优先级
|
||||
|
||||
1. **立即可做(无需重启 VM)**:noVNC 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 画质 0–9,越低越省带宽 | 3 或 4 |
|
||||
| `compressionLevel` | 压缩强度 0–9,越高越省带宽、越耗 CPU | 5–6 |
|
||||
| `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`:
|
||||
|
||||
```yaml
|
||||
version: "3.8"
|
||||
services:
|
||||
macos:
|
||||
image: dockurr/macos
|
||||
container_name: macos-vm
|
||||
environment:
|
||||
- VERSION=ventura
|
||||
- RAM_SIZE=4G # 3G→4G(NAS 有余量时)
|
||||
- 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=2`、`RAM_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 后,执行:
|
||||
```bash
|
||||
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 终端):
|
||||
```bash
|
||||
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 访问)
|
||||
|
||||
```bash
|
||||
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)
|
||||
|
||||
```bash
|
||||
sudo mdutil -i off -a
|
||||
```
|
||||
|
||||
### 2. 减少动画与透明(减轻渲染压力)
|
||||
|
||||
```bash
|
||||
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×720** 或 **1366×768**。
|
||||
|
||||
### 4. 关闭不必要后台
|
||||
|
||||
- 系统设置 → 通用 → 登录项:移除不需要开机自启的应用
|
||||
- 活动监视器中结束占用高的非必要进程
|
||||
|
||||
---
|
||||
|
||||
## 六、外网访问优化(frpc)
|
||||
|
||||
若必须用 `open.quwanzhi.com:8007`:
|
||||
|
||||
- 确认 frpc 服务端带宽与延迟正常
|
||||
- 使用有线或 5GHz Wi‑Fi,避免弱信号
|
||||
- 可考虑 Tailscale/ZeroTier 等组网,替代端口映射
|
||||
|
||||
---
|
||||
|
||||
## 七、预期效果
|
||||
|
||||
| 优化项 | 预期改善 |
|
||||
|--------|----------|
|
||||
| qualityLevel=3 + compressionLevel=6 | 延迟和卡顿明显下降 |
|
||||
| 内网直连 | 延迟可再降 50–100ms |
|
||||
| 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管理
|
||||
Reference in New Issue
Block a user