应用服务器失败的最可能的原因是什么?
例如:“磁盘空间不足”比“RAID 4设置中的2个驱动器同时死亡”更可能。
我的特定环境是Java,因此欢迎使用特定于Java的答案,但不是必需的。
编辑只是为了澄清,我正在寻找与停机相关的崩溃(内存不足是一个很好的例子),而不仅仅是一次性问题(如临时网络故障)。
答案 0 :(得分:2)
如果您尝试保持应用程序服务器,请开始监视它。 Nagios,Big Sister和其他网络监控工具非常有用。
观察内存可用性/使用情况,磁盘可用性/使用情况,cpu可用性/使用情况等。
服务器出现故障的最常见原因很少是两次相同的原因。有人“修复”最后一个最常见的原因,并且出现了一个最常见的新理由。
答案 1 :(得分:2)
Edwin是对的 - 你需要监控以了解问题所在。或者更好 - 了解问题是什么并防止它导致停机。
您不仅要跟踪资源消耗,还要跟踪需求。两者之间的区别显示您是否正确调整了服务器的大小。
有大量的开源工具,如nagios,CollectD等,可以为您提供服务器特定的数据 - 这只是监控,而不是预防。 Librato Silverline(披露:我在那里工作)允许您监视各个进程,然后通过将它们放在您定义资源策略的应用程序容器中来限制它们使用的资源。 如果您的服务器是8核或更少,您可以免费使用它。
答案 2 :(得分:1)
答案 3 :(得分:1)
各种各样的事情都可能导致服务器崩溃,从破坏的硬件(例如磁盘故障)到错误的代码(内存泄漏导致内存不足异常,网络故障被重新引发为运行时异常并且从未被捕获过,在非Java服务器的服务器中是SEGFAULT等。)
答案 4 :(得分:1)
起初,通常是因为内存泄漏,磁盘空间问题,无休止的循环导致cpu吃掉。
一旦你监控这些问题并设置了正确的日志记录和警告机制,他们就会对你进行meta ...并且爆炸错误处理成为完全锁定的可能原因:错误(或者更可能是:两个不愉快的组合)但是当处理程序试图写入日志文件或发送警告(通过邮件或其他东西)时,它会收到另一个错误,它试图通过写入日志文件或发送警告或......来继续处理其中一个资源给出:它可能导致服务器负载飙升,内存问题,填充磁盘空间,锁定网络流量,这意味着远程用户无法访问它来纠正问题等。