代码之家  ›  专栏  ›  技术社区  ›  noahlz

为企业应用程序重新启动每日或100%正常运行时间?

  •  3
  • noahlz  · 技术社区  · 15 年前

    我有一个非常开放的一般性问题(即“取决于平台、应用程序类型等”),但我正在寻找一般性的指导原则作为答案。

    什么时候设计一个连续运行(100%正常运行时间)的应用程序比计划的每日关机/重启更可取?

    显然,web应用程序需要一直处于运行状态,因此假设我们正在讨论一个内部企业应用程序,例如会计系统,或者一个b2b系统,它只在工作日的工作时间内被积极使用。

    我听到的每一个论点如下:

    pro 100%正常运行时间:“一旦你让一个应用程序运行,最好保持它的运行,因为有可能它不会重新启动时,你关闭它。”

    pro daily重新启动:“一个连续运行3年的应用程序可能有一天会宕机,没有人知道如何让它恢复在线。”

    其他考虑因素包括内存增长、性能、维护需求等。这是一个编程问题,因为您的选择可能会影响您的技术设计。例如,如果知道应用程序将每天关闭/重新启动,则不需要每天对某些批处理作业进行编码并清除状态。

    思想?

    6 回复  |  直到 15 年前
        1
  •  5
  •   Scott Dorman    15 年前

    在我看来,你支持和反对100%正常运行时间的论点都是愚蠢的论点。如果您担心应用程序在关闭时无法重新启动,那么您会遇到比正常运行时间更大的问题。同样,如果您觉得没有人知道如何在长时间正常运行后将其恢复到联机状态,那么您会遇到培训和文档问题。

    实际情况是,当涉及到内存消耗和性能时,您应该始终设计一个高效的应用程序。通常,通过这样做,您最终会得到一个应用程序,它可以作为一个长时间运行的进程成功地生存下来,或者是一个频繁重新启动的进程。请记住,由于操作系统更新等原因,典型的计算机系统会定期重新启动。

    除非您有保证100%正常运行时间的需求和服务级别协议,否则只要您高效地设计应用程序,通常就不必过分担心这一点。

        2
  •  4
  •   friol    15 年前

    对不起,我不明白,或者这个问题毫无意义。

    一份申请, 任何 应用程序,应该被设计成,imo,除非有需要,否则应该保持不动。如果一个应用程序/平台需要每天重新启动,那么它就有内存泄漏或bug,或者它的编写通常很差。

    “不要让它熬夜太久,否则你会冒着没人记得怎么再把它打开的风险”这句话很可笑。我的日常工作是做应用程序管理(操作),我从来没有见过一个应用程序熬夜超过一个月。在此之后,您必须处理操作系统维护、数据库修补、软件升级等问题。

    所以,总结一下:编写应用程序,只要需要就可以一直运行。

        3
  •  3
  •   John Feminella    15 年前

    什么时候设计一个连续运行(100%正常运行时间)的应用程序比计划的每日关机/重启更可取?

    我想 这对应用程序设计来说确实是一个正交问题。 许多web服务器和应用程序容器都可以支持热重启。换句话说,这不是一个“应用程序设计”的问题,而是一种技术选择。例如,只需拥有n个应用程序副本(n>1),然后系统地关闭某个特定实例进行维护并根据需要重新启动,就可以完全避免这个问题。

    此外,业务需求和要求应该决定适当的停机时间,而不是您选择的技术。

    pro daily重新启动:“一个连续运行3年的应用程序可能有一天会宕机,没有人知道如何让它恢复在线。”

    泔水。这是一个社会/组织的争论,而不是技术上的争论。这可以通过一个明显的构建过程来解决,该过程包括将启动服务器作为其可能的任务之一。这将“重新启动”的任务减少到一个命令。

        4
  •  0
  •   KLE rslite    15 年前

    如果你对你的团队不是很有信心的话,最好时不时地去清理一下。一天一次可以做到,但有一个范围从这个到“永远”…

    但这通常是由商业禁忌决定的。如果你还没有这些限制…

    那你为什么不推迟你的决定呢?

        5
  •  0
  •   annakata    15 年前

    正如其他人所说,如果你不能信任你的应用程序重新启动,你会遇到更大的问题。

    根据经验,我个人的一般建议是,在整个服务器集群中,每天循环一次(在凌晨,即在最低流量点)。不管你的应用程序的内存效率有多高,尤其是web应用程序,在长时间的运行过程中总是会出现缓存膨胀问题,如果你接受重启的必然性,你绝对希望在计划中发生这种情况,而不是w3wp.exe的突发奇想。

    当然,这完全取决于您拥有的服务器数量、您拥有的流量管理器(如果有的话)以及您的流量配置文件的外观。

        6
  •  0
  •   DaniBaeyens    15 年前

    除了“你的应用程序不够好,如果你需要重新启动它”的想法(我认为他们很完美,我喜欢他们),我更喜欢中间的东西作为预防措施。

    如果你的应用程序不是太大,而且一个人可以毫无困难地重新启动它,那么可以每月重新启动一次,或者每年重新启动3/4次。这样你就可以确保系统管理员很好地知道如何做到这一点(人们有时从公司来来去去),而且他的知识也会保持新鲜。

    如果您有问题,并且您的系统管理员两年前就没有重新启动应用程序,那么他将有一些可用的手册和课程,但可能他忘记了一些步骤,或者他没有那么快解决问题。

    另一个需要考虑的主题是:“一个完全实现的应用程序还是您仍在开发它?”如果这是一个为自己开发的应用程序,您仍然可以在上面编写代码并频繁地升级新功能,那么更频繁地重新启动它会很有趣。如果出现问题,它有更多的可能性隐藏在新代码中。它将帮助您的程序员修复它,并帮助您的系统管理员随时了解应用程序的最新情况。

    当然,做一个完美的应用程序总是一个首要的要素,但是…好吧,我们都知道不总是可能的