具有关键进程的服务器关闭策略的最佳实践

具有关键进程的服务器关闭策略的最佳实践

假设一个 Windows 服务器

  • 正在运行的服务和
  • 运行控制台应用程序

该软件的性质非常关键。操作需要几分钟的时间,不应终止。

关闭/重启该服务器的策略是什么?

  1. 每个正在运行的服务/应用程序自行处理关机?
  2. 是否应该管理员按照说明进行操作关闭服务器?
  3. 应该另一个软件退出每个服务/应用程序然后关闭服务器?

答案1

理想情况下,作为最佳实践,(交互式)控制台应用程序不应在服务器上运行。需要交互式登录会话的应用程序不应在服务器上运行。

Windows 服务应该被编程为处理关机事件。这是极为常见的开发做法。当操作系统准备关闭时,Windows 会向所有 Windows 服务发送通知,特别是为了让服务有足够的时间,以便它们也可以干净地关闭。如果您的服务没有这样做,那么很遗憾它是由业余人士编写的,理想情况下,您应该寻找另一种设计为作为 Windows 服务运行的产品。

在理想世界中,你应该能够随时重新启动 Windows Server,并且该服务器上运行的所有服务都将关闭并重新启动,以无人看管和无头的方式。任何故障通常都是由于应用程序开发人员未能正确处理操作系统关闭事件,或各种可能导致服务无法正常运行的特殊情况,例如由于硬件故障等原因导致的 LUN 自发断开连接。

如果您发现自己需要编写脚本来告诉系统管理员如何重新启动服务器,那么您已经破坏了最佳实践。

  1. 每个正在运行的服务/应用程序是否都应该自行处理关闭?

是的。

  1. 管理员是否应该按照指示关闭服务器?

如果您的服务器上运行的应用程序编写或配置不当,您可能需要这样做。您可以编写管理员的操作脚本,以便至少可以自动关闭。(例如,关机脚本

  1. 另一个软件是否应该退出每个服务/应用程序,然后关闭服务器?

这可能理论上通过巧妙的开发工作是可能的,但如果您只是在服务器上运行服务器应用程序而不是客户端应用程序,那么这将创建一个鲁布·戈德堡机器来应对根本不应该存在的问题。

答案2

是的。每个应用程序/服务都应该自行处理关闭。毕竟,只有给定的程序知道它做什么,以及如何正常关闭它。话虽如此,可能有一些讨厌的服务无法正确执行关闭。在这种情况下,管理员负责手动执行此操作。在关键任务服务器上。就我个人而言,我宁愿服务器根本不关闭,也不愿自动关闭并丢失数据。您的里程可能会非常长。

相关内容