假设一个窗口服务器
这个软件的本质是非常关键的。 操作需要几分钟的时间,不应该终止。
什么是closures/重启这台服务器的策略?
理想情况下,作为最佳实践,(交互式)控制台应用程序不应该在服务器上运行。 需要交互式login会话的东西不应该在服务器上运行。
Windows服务应该被编程来处理关机事件 。 这是非常普遍的开发实践。 当操作系统准备closures时,Windows向所有Windows服务发送一个通知,特别是给服务足够的时间,以便它们也可以干净地closures。 如果你的服务不这样做,那么不幸的是业余人员写的,理想的情况下,你会寻找一个不同的产品,被devise为Windows服务运行。
在理想的情况下,您应该能够在任何时间点重新启动Windows Server,并且在该服务器上运行的所有服务都将以无人照pipe的方式closures并重新启动。 任何故障通常都是由于应用程序开发人员无法正确处理操作系统closures事件,或各种可能导致服务无法正常运行的情况,例如硬件故障导致的自发的LUN断开等。
如果您发现自己需要编写脚本来告诉系统pipe理员如何重新启动服务器,那么您已经完成了最佳实践。
- 每个正在运行的服务/应用程序本身是否应该closures?
是。
- pipe理员是否应按照指示closures服务器?
如果您的服务器上运行的应用程序编写不当或configuration不当,则可能需要执行此操作。 您可以编写pipe理员的操作脚本,以便至less可以自动closures关机。 (例如, 关机脚本 。)
- 如果另一个软件退出每个服务/应用程序,然后closures服务器?
这在理论上可以通过巧妙的开发工作来实现,但是如果您只是在服务器上运行服务器应用程序而不是客户端应用程序,那么它将创build一个Rube Goldberg机器来回应一个本来不应该存在的问题。
是。 每个应用程序/服务应该自行处理closures。 毕竟只有给定的程序知道它做了什么,以及如何优雅地closures它。 话虽如此,可能会有一些烦人的服务在那里不正常closures。 在这种情况下,pipe理员负责手动完成。 在关键任务服务器上。 就个人而言,我宁愿有一个服务器不closures,而不是自动执行数据丢失。 你的里程可能非常。