我有一个相当开放的一般性问题(即“取决于平台,应用程序类型等”)但我正在寻找一般指导原则作为答案。
何时优先设计连续运行的应用程序(100%正常运行时间)与计划的每日关机/重启?
显然,网络应用程序需要一直处于运行状态,因此我们假设我们正在讨论内部企业应用程序,例如会计系统或仅在工作日工作时间主动使用的B2B系统。 / p>
我听到的每一个论点如下:
Pro 100%正常运行时间:“一旦你运行一个应用程序,最好保持它,因为当你关闭它时它有可能不会重启。”
Pro每日重启:“一个持续3年的应用程序可能会有一天停机,没有人会知道如何将其重新联机。”
其他考虑因素包括内存增长,性能,维护需求等。这是一个编程问题,因为您所做的选择会影响您的技术设计。例如,如果您知道应用程序将每天关闭/重新启动,则无需每天编写某些批处理作业并清除状态。
思考?
答案 0 :(得分:5)
在我看来,你声明赞成和反对100%正常运行时间的论据都是愚蠢的论点。如果您担心应用程序在关闭时没有重新启动,那么您遇到的问题比正常运行时间更大。同样,如果您觉得在经过长时间的正常运行时间之后没有人知道如何将其重新联机,那么您就会遇到培训和文档问题。
现实情况是,在内存消耗和性能方面,您应该始终设计一个高效的应用程序。通常,通过执行此操作,您最终会得到一个应用程序,该应用程序可以在长时间运行的进程或经常重新启动的进程中成功运行。请记住,由于操作系统更新等原因,您的典型计算机系统无论如何都会定期重新启动。
除非您有保证100%正常运行时间的要求和服务水平协议,否则只要您有效地设计应用程序,通常不必过分担心。
答案 1 :(得分:4)
很抱歉,但我没有明白这一点,或者这个问题毫无意义。
应该设计一个应用程序,任何应用程序,IMO,以便在需要时保持运行状态。如果一个应用程序/平台需要每天重新启动,那么它就会出现内存泄漏或错误,或者通常写得不好。
关键是“不要让它熬夜太长时间,否则你会冒没有人会记得如何再次打开它”的风险非常可笑。我做应用程序管理(操作)作为我的日常工作,我从未见过一个应用程序熬夜超过一个月。在此之后,您必须应对操作系统维护,数据库修补,软件升级等。
因此,总结一下:编写可以在需要时保持不变的应用程序。
答案 2 :(得分:3)
何时优先设计连续运行的应用程序(100%正常运行时间)与计划的每日关机/重启?
我认为这实际上是应用程序设计的正交问题。许多Web服务器和应用程序容器都可以支持热重启。换句话说,这不是“应用程序设计”的问题,而是技术的选择。例如,您可以完全避免这个问题,只需拥有应用程序的N个副本(N> 1),然后系统地将特定实例关闭以进行维护并根据需要重新启动。
此外,业务需求和要求应该是确定适当的停机时间,而不是您选择的技术。
Pro每日重启:“一个持续3年的应用程序可能会有一天停机,没有人会知道如何将其重新联机。”
猪食。这是一个社会/组织论证,而不是技术论证。这可以通过一个明显的构建过程来解决,其中包括启动服务器作为其可能的任务之一。这减少了“重新启动”到单个命令的任务。
答案 3 :(得分:0)
如果你对你的团队没有极大的信心,那么最好不时下去,清除一切。每天都可以做到这一点,但是从这个到“从不”......有一个范围......
但这通常取决于业务限制。如果你还没有这些限制......
那么,你为什么不推迟你的决定?
答案 4 :(得分:0)
正如其他人所说,如果你不相信你的应用程序重新启动,你就会遇到更大的问题。
根据经验,我对网络应用程序的一般性个人建议是每天一次(在凌晨,即在最低的流量点)循环它们在整个服务器群集上交错。无论您的应用程序的内存效率如何,特别是Web应用程序在长时间的正常运行时间内总是会出现缓存膨胀问题,并且您接受重新启动的必然性,您绝对希望在您的日程安排上发生这种情况而不是一时兴起w3wp.exe的。
当然这取决于您拥有的服务器数量,您拥有的流量管理器(如果有)以及您的流量配置文件的样子。
答案 5 :(得分:0)
除了“你的应用程序不够好,如果你需要重新启动它”的想法(我认为它们很完美,我喜欢它们),我宁愿中间的东西作为预防措施。
如果您的应用程序不是太大,并且一个人可以毫不费力地重新启动它,可以每月重启一次或每年3/4次。通过这种方式,您将确保系统管理员很清楚如何做到这一点(人们有时来自公司),而且他的知识也很新鲜。
如果你有问题并且你的系统管理员两年前还没有重新启动应用程序,他将会有几本手册和课程完成,但可能他已经忘记了一些步骤,或者他没有那么快解决问题。
需要考虑的其他主题是:“是完全实施的应用程序还是您仍在使用它?”如果它是为您自己制作的应用程序,您仍然可以对其进行编码并频繁升级新功能,更频繁地重新启动它会很有趣。如果出现问题,则在新代码上隐藏的概率更多。它将帮助您的程序员修复它和您的系统管理员,以便随时了解该应用程序的最新动态。
当然,制作完美的应用程序始终是最重要的元素,但是......好吧,我们都知道并非总能实现