【问题标题】:top reasons why an app server crashes应用服务器崩溃的主要原因
【发布时间】:2011-01-03 16:11:01
【问题描述】:

应用服务器故障最可能的原因是什么?

例如:“磁盘空间不足”比“RAID 4 设置中的 2 个驱动器同时死机”的可能性更大。

我的特定环境是 Java,因此欢迎使用 Java 特定的答案,但不是必需的。

EDIT 澄清一下,我正在寻找与停机时间相关的崩溃(内存不足是一个很好的例子),而不仅仅是一次性问题(如临时网络故障)。

【问题讨论】:

  • 认为这取决于应用程序。 Falmarri 说明了一个很好的理由:P。
  • 尽管存在代码(软件)问题,但所有该死的硬件问题也都在您的列表中
  • 特别是代码中的一些内存泄漏或处理不当的异常
  • @Daniel 社区维基对我来说很好

标签: java crash


【解决方案1】:

如果您试图保持应用服务器正常运行,请开始监控它。 Nagios、Big Sister 和其他网络监控工具非常有用。

观察内存可用性/使用情况、磁盘可用性/使用情况、cpu可用性/使用情况等

服务器宕机的最常见原因很少会出现两次相同的原因。有人“修复”了最后一个最常见的原因,然后一个新的最常见的原因诞生了。

【讨论】:

  • 不错的推荐监控软件。我正在考虑可以内置到 Java 应用程序中的警报,但也许一个成熟的监控套件是最好的主意。
  • 并非所有崩溃都直接来自内部。其他应用可能会消耗正常处理所需的资源。
【解决方案2】:

Edwin 是对的 - 您需要监控才能了解问题所在。或者更好 - 了解问题所在并防止它导致停机。

您不仅应该跟踪资源消耗,还应该跟踪需求。两者之间的差异显示您是否正确调整了服务器的大小。

有很多开源工具,例如 nagios、CollectD 等,可以为您提供特定于服务器的数据——不过这只是监控,而不是预防。 Librato Silverline(披露:我在那里工作)允许您监视单个进程,然后通过将它们放置在您定义资源策略的应用程序容器中来限制它们使用的资源。 如果您的服务器是 8 核或更少,您可以免费使用它。

【讨论】:

    【解决方案3】:

    由于内存泄漏导致的“Out of Memory”异常。

    【讨论】:

      【解决方案4】:

      各种各样的事情都可能导致服务器崩溃,从损坏的硬件(例如磁盘故障)到错误的代码(内存泄漏导致内存不足异常,网络故障被重新抛出为运行时异常并且从未被捕获) , 在不是 Java 服务器的服务器中是 SEGFAULT 等)

      【讨论】:

        【解决方案5】:

        一开始一般是因为内存泄漏、磁盘空间问题、死循环导致cpu吃光。

        一旦您监控了这些问题并设置了正确的日志记录和警告机制,它们就会启动元数据...并且爆炸式错误处理成为完全锁定的一个可能原因:一个错误(或更可能:两个不愉快的组合) 发生,但是当处理程序尝试写入日志文件或发送警告(通过邮件或其他方式)时,它会收到另一个错误,它试图通过写入日志文件或发送警告来处理......并且这种情况一直持续到其中一项资源给出:它可能导致服务器负载飙升、内存问题、磁盘空间填充、锁定网络流量,这意味着远程用户无法访问它来纠正问题等。

        【讨论】:

          猜你喜欢
          • 2011-12-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-27
          • 2015-06-25
          • 2014-11-13
          • 2010-10-30
          • 1970-01-01
          相关资源
          最近更新 更多