注意:我已阅读Windows 服务器需要多久重新启动一次?但这个问题专门与我们的远程桌面服务器有关。
我们有一个 Windows Server 2008R2 服务器 - 一个 VMware ESX VM - 获得远程桌面服务许可,25 个用户也使用 RRAS (SSTP)。在工作日的平均工作时间内,有 8 到 12 个登录的活跃用户,另外还有 4 到 6 个“断开连接”的用户。它具有 12 GHz CPU 硬预留和 16 GB RAM,也完全预留。CPU 预留可在需要时扩展到最大 24 GHz。
我们的许多用户完全依赖服务器来工作。他们也抱怨其性能,但许多人不愿意改变工作习惯或软件来提高其性能。具体来说:
- 用户拒绝注销而不是断开连接
- 用户坚持使用 Lync 2013 而不是 Lync 2010(Lync 2013 是一个臭名昭著的资源消耗者)
我不能夸大他们拒绝注销的重要性。断开连接的用户在断开连接时继续占用 RAM,这意味着在任何给定时间,我们有多达 16个特定程序的实例在运行。
我还通过经验注意到,远程桌面服务器运行的时间越长,泄漏/僵尸往往会越积越多。重新启动后,即使在许多用户登录后比较性能,服务器也很新鲜且速度更快。我还读到定期重新启动可能会有所帮助。
所以我建议定期重启虚拟机——我想每周做一次,比如周六晚上——因为我觉得这些重启可以解决很多问题。
我想知道,如果您是 Windows 管理员,
即使在用户断开/重新连接之后,垃圾/僵尸/泄漏也会随着会话时间累积这一事实是否正确?
您多久用远程桌面服务重新启动类似使用的 Windows Server?
一般来说,我反对应该定期重启 Windows 服务器的想法,除了TS/RDS 服务器。我们每天都重新启动我们的。它会清除旧会话、释放正在使用的资源(CPU、RAM、文件句柄等),因此我的意见和建议是您配置 RDS 服务器的每日计划重启。
请注意,这个答案只是我的意见。这里没有事实陈述。
设置适当的组策略以自动注销它们。您可以单独控制空闲超时和注销。这当然应该尽量减少白天的一些问题。
我每天凌晨 3:00 重新启动我的 3 个服务器 TS 场。因为,是的,当你有很多人使用一个系统时,垃圾会随着时间的推移而积累。我们有 3 台服务器在 60-90 人之间共享,具体取决于一年中的日期和时间。
我可能不需要经常重启,但我们开始在 Windows 2000 中使用终端服务,当时我们的打印机驱动程序很糟糕。打印后台处理程序基本上会在启动一两天后失败。所以我们开始每晚重新启动,因为我们没有任何手段让打印机制造商修复他们糟糕的驱动程序。
根据您的现金、时间和用户的精明程度,另一个想法可能是建立第二台服务器。您仍然需要偶尔重新启动,但您似乎已达到单个服务器的限制。
您应该能够使用相同的客户端 CAL(许可不是我最擅长的领域),并且根据您的虚拟化解决方案,现有许可可能已经涵盖了额外的 VM。
即使没有额外的 VM 资源和额外的操作系统开销,假设您可以平均分配负载,您可能会发现系统作为两个独立的 6 GHZ CPU 和 8GiB 内存 VM 处理得更好。有三种可能的方法:
如果您不希望客户端在其 DNS 缓存过期并获取另一台服务器的 IP 后将断开的会话留在一台服务器上,请在您的循环条目上设置一个长 TTL。或者,让他们连接的计算机的主机名显而易见(例如,使其成为背景的一部分),如果他们想恢复会话,请让他们重新连接到该主机名。
† 如果他们将始终使用同一个桌面,只需修改本地桌面上的 hosts 文件。如果他们在机器之间移动,请编写一个脚本(通过组策略分发)来解析主机文件,以便他们当前用于服务器的 DNS 条目指向特定用户应该使用的服务器的 IP。如果包含该 DNS 名称的行已存在,则替换它,如果不存在,则将其添加到文件的末尾。
我熟悉拒绝注销的“用户类型”。但是,他们似乎没有问题理解服务器将每晚重新启动,因此任何未保存的工作都会丢失。这是在 Server 2008 R2 TS 上,在一台机器上支持大约 20 个用户。
> 用户拒绝注销而不是断开连接
您在这里遇到的是管理/人力资源问题,而不是技术问题。如果保持登录状态的人正在影响其他人的工作(通过不必要地降低性能),那么实际上只有两种解决方案:
如果可能,将其作为技术问题并安排增加资源(更多 RAM,SSD 代替旋转金属,...),以便问题以这种方式消失。当然,通过在一台机器上投入新资源可以实现的目标是有限的,但它可能会奏效。
将其视为人员管理问题,并找到某种方法来鼓励(或未能执行)适当的纪律。当然,这可能不在您的直接责任范围内,因此根据您办公室的政治情况,这可能会非常棘手……
我们遇到了类似的问题,人们从不重新启动他们的台式机,这意味着安全更新有时会排好几个月的队。安全政策规定“应及时安装已知安全问题的补丁,在已经存在漏洞的情况下立即安装,除非可以证明有足够的缓解措施”,因此最终它只是通过组策略强制执行:所有非-server 如果有挂起的更新,Windows 机器将在周二晚上重新启动,没有例外。如果有人反对这一点,有两个简单的反驳:如果我们不遵循该政策,我们将在下次进行任何对业务重要的审计时失去我们的 ISO-this-that-and-the-other 认证,
> 用户坚持使用 Lync 2013 而不是 Lync 2010(Lync 2013 是一个臭名昭著的资源消耗者)
除了他们想要更新、更闪亮的东西之外,还有什么特定的原因吗?如果有他们真正需要的功能,那么您可能对这个角度无能为力。
如果聊天应用程序是主要的资源问题,我想知道是否有办法在空闲会话中只杀死该程序的实例而不是杀死整个会话?
> 每次我在没有足够通知的情况下重新启动时,他们都会失去工作,即在当天“中午”之前他们需要知道的所有重新启动
您没有说明工作的性质,因此这在很大程度上取决于工作内容,但他们可能在尽职调查方面失败(即没有正确完成工作)。
如果他们不定期保存文档,那么他们的工作将面临风险,而不是您。如果出现断电或其他故障导致服务器停机,会发生什么情况?他们还会怪你吗?
当然,如果他们在重新启动时正在积极工作,或者需要让长时间运行的进程无人看管,那么您可能需要解决真正的调度问题。
冒着听起来像销售人员的风险——我们使用ShutdownPlus 滚动重启。我们已经设置好每天晚上尝试重新启动我们的服务器。它工作得很好——您可以将其设置为仅在每个人都注销后重新启动服务器。如果有人仍在使用 RD 服务器 X 次,它将重新启动循环。如果您愿意,该工具还可以为您注销用户。甚至在 ESXi 上重启你的虚拟机。
我将它与几个 GPO 一起使用,它会在几个小时后注销断开连接的用户。当然,在一定的空闲时间后断开活动会话。这是一种非常优雅的方法,除了偶尔会阻止会话关闭的流氓程序。我们已经解决了这些问题。我们现在设置它的方式每台服务器都会尝试从 22.00 到 7.00 每小时重新启动,直到它成功为止。实际上,用户每周至少重启 2/3 次,这对我来说很好。
不幸的是,这不是一个免费程序,但它做得很好。我正在实现一个 powershell 脚本,它有望在重新启动之前更新服务器。
对 Microsoft 服务器重新启动的直接回答是/否。哦,如果生活那么容易!它确实取决于服务器上运行的应用程序。但这是一个简单的指南,但不是硬性规定。
运行 Windows 服务器 **x版本**(自动重启和计划) 的物理服务器95%可以每两周重启一次,而无需担心。(检查正在应用的补丁是否相关且必需)。确保在发布到实时/生产系统之前在测试服务器上全面测试补丁。
运行 Windows Server x版本的VMWare虚拟服务器- 每两周重新启动一次(如果应用了补丁,请参阅上面的评论)
物理 VMWare 服务器 从不/很少且仅在需要时从不调度。(如果保持最新,通常非常稳定)VMWare 补丁/更新将需要重新启动。
运行Windows SQL的VMWare(限制重新启动,仅手动应用 Windows 补丁!如果补丁需要它并且仅在您停止所有客户端连接后重新启动)检查连接是否在服务器备份后重新连接。SQL Server 可能需要相当长的时间才能重新启动,因此请计划好几个小时。
提醒:在对VMWare (Windows Server) 进行任何更改之前先对其进行SNAPSHOT!如果在服务补丁或更新应用后系统崩溃或应用程序无法启动,您可以快速获取服务器备份并在有限的停机时间内运行。请记住记下错误,以便您可以找到修复程序,不要因为系统失败而单独离开系统,因为它可能在将来失败。
希望这会有所帮助,并且可以通过一个小方法来解决问题。