很多做设计、机械加工和仿真分析的小团队都会遇到一个共同的痛点公司里就那两三台配置不错的图形工作站跑Solidworks的同事一多就得排队。后来我看了“Windows Server 2019 创建RDS、激活远程桌面服务RDS许可证、设置RDP使用Solidworks软件GPU开启方法”这个标题发现它正好把这条最常踩的路线给串起来了——既要解决多人同时远程使用Solidworks的问题又要让远程会话里的显卡真正干活而不是让Solidworks在软渲染模式下卡成PPT。这篇文章就围绕这条链路把RDS部署、许可证激活、GPU加速这三个环节逐一拆开讲清楚。先说清楚这套方案适合什么人。如果你是IT管理员要给公司内部十几个人做Solidworks远程办公服务器是Windows Server 2019客户端可能包括Windows笔记本和台式机或者你是个人用户手头有工作站想通过RDP从别的电脑连过去用Solidworks但发现图形性能很差那么这篇文章的思路可以直接拿来用。我下面的操作不是“理论最优解”而是“实际跑通、能交差”的方案其中涉及到GPU的部分有几个关键前提我也会把原因讲透。1. 部署前的全局规划为什么需要RDS而不是普通RDP很多人第一反应是Windows 10也有远程桌面直接开个RDP不就行了但普通RDP的限制非常麻烦——同一时间只允许一个交互式会话第二个用户一登录第一个就被踢掉了。Solidworks这种重度GUI应用不可能让多个人轮流挤一个桌面。远程桌面服务RDS的价值就是通过会话主机Session Host同时承载多个用户的远程桌面会话每个用户看到的是自己的独立桌面互不干扰。1.1 理解RDS的两种模式会话集合与虚拟桌面集合RDS在部署方式上分两派会话集合Session Collection和虚拟桌面集合Virtual Desktop Collection。前者是多个用户共享一个Windows Server桌面所有用户跑在同一个操作系统上应用和桌面都是共享的后者是每个用户有独立的虚拟机隔离性更好但需要额外的Hyper-V主机和更大的资源开销。对于Solidworks这种需要稳定图形性能、又对资源占用比较敏感的场景我建议优先选择会话集合。理由有几点Solidworks的许可证本来就可以在网络许可证服务器上集中管理不需要每个用户拥有独立虚拟机。会话集合下只需要在一台服务器上安装Solidworks用户登录后看到的都是同一份安装省去了副本多开和维护成本。后续升级Solidworks版本时只需要在服务器上改一次所有用户下一次登录就生效。虚拟桌面集合不是不能用而是适合预算充足、对软件兼容性要求极其苛刻的环境。比如某个用户装了特殊的插件或配置和别人的环境彻底隔离这时候才值得上VDI。1.2 服务器硬件、GPU与存储准备RDS会话主机和普通的工作站不一样它要服务十几个并发用户CPU主频不必追求极致但核心数量一定要多。我部署过一台双路Xeon Silver 421020核40线程带12个Solidworks轻度使用用户CPU占用在60%左右整体还算稳。内存方面Solidworks每个会话至少要2GB起步加上Windows Server系统本身占用4GB左右所以16个并发用户建议至少64GB内存预算宽裕直接上128GB。磁盘性能是最容易被忽略的瓶颈。Solidworks打开装配体时需要频繁读取模型文件如果多人同时打开同一个大装配体机械硬盘会直接卡死。建议用NVMe SSD做系统盘模型文件放在另一块SSD上并且开启存储空间的写缓存。网络方面内网千兆是底线如果客户端要跑大型装配体建议万兆到桌面否则远程会话里的模型旋转会明显掉帧。GPU是这个话题里的重点。标题提到“RDP使用Solidworks软件GPU开启方法”关键前提是你在服务器里装了几块显卡、这些显卡能不能被会话主机使用。Windows Server 2019不像普通Windows那样自动给RDP会话分配GPU资源必须做额外配置才能让Solidworks从软渲染切到硬件渲染。关于这部分后面第4章会详细展开。1.3 规划许可模式每用户 vs 每设备先把账算清楚RDS许可有“每用户”和“每设备”两种模式决策时记住一个核心原则先看你的用户和设备数量哪个小。如果公司有20个员工但只有10台电脑需要远程访问服务器选“每设备”反过来员工用各种电脑换着连比如上午办公室台式机、下午个人笔记本就选“每用户”。每用户模式通常更灵活但价格也更贵因为每人要买一个RDS CAL客户端访问许可证。在实际激活RDS许可证之前还有一个被人疯狂踩坑的点许可模式必须在组策略里指定而且要和你在授权服务器上买的CAL类型保持一致否则系统会一直提示“没有可用许可证”。这我在第3章会给出完整的设置位置。2. 从零搭建RDS远程桌面服务规划做完了开始动手。我建议在干净的Windows Server 2019系统上操作不要一开始就加入AD域。虽然RDS可以和域结合做统一认证但小型团队直接用服务器本地账号管理更省事先把服务跑起来再说。2.1 安装RD会话主机角色打开服务器管理器点击“添加角色和功能”在“远程桌面服务”分类下勾选**“远程桌面会话主机”**。如果后面要做Web访问或网关可以一并勾选但最基础的就只要会话主机。安装完成后系统会要求重启。很多新手在这里不知道下一步该干什么其实重启后还需要验证一个东西远程桌面会话主机的“远程桌面”开关是否开启。在“系统属性”-“远程”里确保“允许远程连接到这台计算机”是选中的。从命令行安装更快PowerShell里执行Install-WindowsFeature RDS-RD-Server -IncludeManagementTools装完角色后再执行Restart-Computer2.2 创建会话集合并配置用户授权角色安装好还需要在服务器管理器里创建“会话集合”Session Collection。操作路径服务器管理器 - 远程桌面服务 - 概述 - “创建新会话集合”。按照向导给它起个名字比如“Solidworks-LAB”把服务器加进去然后设置用户组。这里有个细节会话集合创建时默认只允许管理员组和创建者指定的用户访问。如果你的用户都在本地组“Remote Desktop Users”里记得在向导的“用户组”页面显式加上“.\Remote Desktop Users”否则用户会收到“你已经获得连接授权但该用户不存在”这类误导性错误。另外会话集合创建完后还需要配置会话超时和断开重连策略。Solidworks用户经常挂着不关如果服务器设置了一个小时断开闲置连接用户模型没保存就断掉会非常难受。在RDS属性里把“到达时间限制”设置为“从不”“闲置会话限制”设置为“从不”至少要在用户反馈“总是掉线”之前先去关掉这些默认限制。2.3 远程桌面连接测试与组策略优化先用一个测试账号从Windows 10客户端连接远程桌面连接mstsc- 输入服务器IP - 输入用户名密码 - 登录后看到Windows Server桌面。如果出现了“由于没有远程桌面授权服务器远程会话被中断”的报错这是正常的——因为还没配置RDS许可证。先暂且用管理员身份绕过这个提示继续测试或者用评估期内直接跳过。等第3章激活许可证后这个报错会自动消失。测试通过后还需要调整一组组策略让远程桌面体验更接近本地。运行gpedit.msc在“计算机配置 - 管理模板 - Windows组件 - 远程桌面服务 - 远程桌面会话主机 - 远程会话环境”下把“使用硬件图形适配器进行所有远程桌面服务会话”设为“已启用”同时把“将视觉体验优化为最佳性能”也打开。这两个策略对GPU调用和画面流畅度影响很大尤其是Solidworks这种图形密集型软件。3. 激活RDS许可证并绑定授权服务器RDS许可证是这套方案里最容易炸的地方。很多人辛辛苦苦装好RDS结果一登录就被踢出来弹窗写着“远程桌面授权到期”。下面按实操顺序一步步来只要按这个顺序做就不会卡。3.1 安装RD授权服务器角色在服务器管理器里再次打开“添加角色和功能”这次勾选**“远程桌面授权”**角色。安装完成后授权服务器不会自动激活还需要在工具菜单里打开“远程桌面授权管理器”对它进行激活。这里有一个很多教程没讲透的坑如果这台服务器既当会话主机又当授权服务器授权服务器必须先激活并安装好CAL否则即使你后面配置了组策略系统依然会报授权不可用。我的建议是先把这个角色装上但暂时不做CAL等验证完服务器能正常激活后再装避免激活次数太快用完。3.2 激活许可证服务器并添加CAL打开“远程桌面授权管理器”右键点击授权服务器 - “激活服务器”。激活过程需要选择连接方式推荐“自动连接Internet”它会自动验证。激活后右键点击服务器 - “安装许可证”选择你的购买渠道Open License、Enterprise Agreement等输入协议号。注意RDS CAL是按用户或设备数购买的与Windows Server标准授权不是一回事。比如你有20个用户就要买20个RDS Per User CAL单独激活。安装完成后可以回到“服务器管理器 - 远程桌面服务 - 概述”看到许可证状态显示为“已配置”。如果这里显示“尚未配置”多半是下一步的组策略缺失。3.3 配置许可证服务器作用域避免“授权过期”误报这是90%“RDS授权过期”问题的根源。正确做法是在会话主机上运行gpedit.msc进入“计算机配置 - 管理模板 - Windows组件 - 远程桌面服务 - 远程桌面会话主机 - 授权”。在右侧找到“使用指定的远程桌面许可证服务器”设为“已启用”并把授权服务器的机器名或IP填进去。紧接着在同目录下设置“远程桌面授权模式”选择“按用户”或“按设备”必须和购买/安装的CAL类型一致。改完后在命令行强制刷新策略gpupdate /force重启服务器或者至少重启“远程桌面服务”相关服务Remote Desktop Services再次用客户端连接那个臭名昭著的授权弹窗就消失了。4. Solidworks远程调用的GPU加速方案到这里RDS本身已经可以稳定使用但Solidworks用户一登录就会发现打开模型、旋转视角时很卡菜单和渲染都慢半拍。原因很简单RDP协议默认不会把服务器的独立显卡能力提供给远程会话Solidworks会退回到WARP软渲染或GDI渲染。下面把这条链路拆开讲清楚怎么让Solidworks在远程会话里用上真GPU。4.1 为什么RDP默认不用GPUWARP软渲染与RemoteFX先说底层机制。RDP会话在默认情况下Graphics要经过Remote Desktop Protocol的虚拟通道传输Windows对远程会话的渲染要么走CPU软渲染WARP要么走基本显示驱动基本显示适配器。Solidworks对OpenGL要求很高WARP模式下基本是不可用的状态所以会非常卡。微软曾经在Windows Server 2012 R2 / 2016里推出过RemoteFX vGPU技术允许虚拟机或远程会话使用宿主机的GPU加速。但Windows Server 2019开始微软明确弃用了RemoteFX所以想在Server 2019上直接靠RemoteFX开启GPU加速没有官方支持路径。这也是为什么很多人搜“Windows Server 2019 Solidworks GPU”会看到大量混乱信息的原因。那么Server 2019上正确的路径是什么答案是Hyper-V GPU-PGPU Partitioning或 DDA离散设备分配。也就是说不要在物理会话主机上直接跑RDS会话集合而是先虚拟化然后把GPU分配给虚拟机或虚拟机中的远程会话。 Solidworks在最直接的物理机RDP场景下即使装了驱动RDP桌面本身也无法把GPU性能透传给远程用户。而通过Hyper-V GPU-P每个远程会话的虚拟机可以拿到物理GPU的分区资源这样Solidworks在虚拟机里运行实际调用到的就是硬件GPU而不是WARP。4.2 基于Hyper-V的GPU虚拟化GPU-P与DDA的取舍先讲两种方案的区别这样你就能根据自己手里的显卡和服务器型号决定怎么选。GPU PartitioningGPU-P把一张物理GPU分割成多个虚拟GPU分给多个虚拟机或会话使用。它适合“一张显卡给多个用户”的场景支持多个虚拟机并发。Windows Server 2019上对支持的显卡有明确列表一般是专业卡或数据中心卡比如NVIDIA Quadro RTX 4000/5000、NVIDIA A10/A40以及部分AMD的专业卡。消费级RTX卡比如RTX 3080/4090在GPU-P场景下通常不被官方驱动支持需要修改注册表或特殊驱动极不稳定。所以如果你想用GPU-P做Solidworks共享买专业卡几乎是硬性前提。Discrete Device AssignmentDDA把一整块物理GPU直接“直通”给某一台虚拟机独占这个虚拟机里的远程用户或者多个远程用户共享这一张卡。它更接近物理机性能缺点是显卡无法被多台虚拟机同时使用。如果公司只有一台图形服务器要给三个用户用SolidworksDDA只适合先把GPU给一个用户其他用户继续软渲染体验割裂。实际部署时我建议在Windows Server 2019上配合Hyper-V用GPU-P。原因很实际Solidworks在专业卡上的OpenGL性能通过分区之后的损耗并不大而对于装配体和渲染操作来说GPU-P能把整张卡的算力按比例分配给多个VM这正是RDS多用户场景最需要的。4.3 在会话主机上开启Solidworks的硬件渲染即使GPU挂载成功Solidworks远程会话里能不能自动识别还要看两个设置。首先远程桌面客户端mstsc里要勾选“体验 - 使用硬件图形适配器”吗实际上RDP客户端v8及以上版本默认支持H.264硬件加速但服务器端的会话需要被放到“支持硬件图形”的会话主机上。如果你用Hyper-V GPU-P虚拟机里的视频控制器应该显示为“Microsoft Hyper-V 视频”或者你的GPU虚拟功能。此时在虚拟机里打开设备管理器确认能在“显示适配器”下看到你的物理显卡而不是“Microsoft基本显示适配器”。其次Solidworks自身有图形加速开关。启动Solidworks进入“工具 - 选项 - 性能”勾选“使用OpenGL”和“增强图像质量需要OpenGL”。有些版本里还有“启用硬件加速”选项一并打开。如果Solidworks还是提示“不支持RealView”多半是因为系统检测到虚拟机里显示驱动不是完整的WDDM驱动。这时候去显卡厂商官网找针对虚拟化环境的驱动版本比如NVIDIA GRID驱动现在叫NVIDIA vGPU驱动不能用本地桌面版驱动替代。做完这些再检查SolidWorks RX诊断工具开始菜单里有SolidWorks RX查看“图形硬件”一栏应该能看到显卡型号和驱动状态并且不再是“Software OpenGL”。4.4 验证GPU是否真正被Solidworks调用这一步太关键了很多管理员折腾半天结果Solidworks还是软渲染因为自己没有验证手段。我一般用三个方法交叉验证第一在虚拟机/服务器里打开“任务管理器”切到“性能”页签看“GPU”一栏。在Solidworks里旋转大型装配体时GPU利用率如果明显跳动到很高的百分比说明硬件加速已经生效如果你看到CPU暴涨而GPU几乎为0%那一定是WARP软渲染。第二在Solidworks里打开一个大型装配体然后执行“视图 - 修改 - 渲染”观察操作响应的延迟。如果旋转时画面很流畅而且阴影计算是实时的说明GPU在工作如果旋转时模型变成线框、卡顿严重基本可以断定为软渲染。第三给Solidworks做基准测试。用Solidworks官方的“SolidWorks Benchmark”工具跑一遍CPU/GPU测试对比远程会话里的成绩和物理机上的成绩。差距在10%-20%以内属于正常范围超过50%就要检查驱动或GPU分配是否出了偏差。5. 常见问题与排错实录最后一部分把我自己和周围同行在部署这套环境时经常踩到的问题集中整理一下。5.1 经典问题速查表症状主要原因解决思路远程登录后提示“无远程桌面授权服务器”未激活许可或RDS许可作用域未配置按第3章步骤激活授权服务器并设置组策略用户提示需要加入Remote Desktop Users组会话集合用户组未添加服务器管理器里修改会话集合属性添加用户组远程会话卡顿、旋转模型掉帧RDP会话没有GPU加速检查虚拟机是否挂载GPU-P或DDA切换专业卡显卡驱动Solidworks打开后弹窗“RealView不可用”虚拟机内显示驱动不支持OpenGL安装NVIDIA vGPU/GRID驱动或关闭虚拟机的远程FX限制会话经常掉线或断连RDS策略限制了闲置超时修改RDS会话集合属性将闲置限制设为从不连接时黑屏或闪烁显卡驱动与RDP协议冲突更新驱动到适配虚拟化环境的版本关闭“不支持的RemoteFX功能”RDS CAL已安装但依然报授权不足授权模式与CAL类型不匹配检查组策略里“远程桌面授权模式”与购买的CAL是“每用户”还是“每设备”5.2 三个我在实际部署中踩过的坑第一个坑是把RemoteFX当成Server 2019的可用功能。我最初在一台Server 2019物理机上试图开RemoteFX GPU加速结果在安装“RemoteFX图形”功能时提示不受支持最后查文档确认是微软在2019里彻底砍掉了它。如果你和我一样有旧教程的惯性请直接放弃这条路转用Hyper-V GPU-P。第二个坑是消费级显卡想强行上GPU-P。我在一台实验机器上插了RTX 3090尝试改注册表启用GPU-P虽然系统界面能显示分区成功但Solidworks运行几分钟后驱动崩溃直接蓝屏。后来换成Quadro RTX 4000才稳定。所以结论是如果你真要共享GPU跑Solidworks专业卡是必选项不要在消费级卡上省这个钱时间成本远远高于显卡差价。第三个坑是许可证服务器和会话主机共用同一台机器时的授权时序。我在全新Server 2019上装好RDS和授权角色激活服务器之后马上给用户开放连接结果用户报“许可证不可用”。后来发现是组策略没有刷新授权服务器识别失败。执行gpupdate /force并重启“Remote Desktop Services”服务之后才恢复正常。任何涉及到LICENSE的变更改完后一定要强制刷策略不能省这一步。另外还有个小技巧如果只是在局域网内测试可以跳过AD域环境直接用服务器本地用户但生产环境最好还是加域因为RDS的每用户许可和域用户组管理结合起来才顺手而且后面要做用户策略细分也方便。加域后注意RDS授权服务器的组策略作用域要重新指定否则之前配好的授权又会“失效”。这个部署做完之后Solidworks在远程桌面里的操作手感已经和本地工作站差不多了。如果后续要扩展可以考虑加一台远程桌面网关服务器这样用户在外网通过网页也能访问会话主机而不需要暴露3389端口再往后如果需要更精细的资源管控可以研究下RDS的小型化容量规划工具把用户并发数、内存占用的预测做得更准。我在实际使用中养成的一个习惯是每季度定期检查一次RDS许可证剩余数量和授权状态因为CAL授权很容易在续期时掉链子早发现早处理总比用户在项目截止前突然连不上要从容得多。
