我们有一个在 Tomcat 上运行的 Web 应用程序(由第三方开发)。我们从应用程序中获得了非常糟糕的性能。应用程序开发人员声称每晚重新启动 Web 服务器是行业最佳实践,以释放所有内存使用量并重新开始。
从客户的角度来看,这可以缓解他们白天网站崩溃的问题,但从系统管理员的角度来看,这是一个糟糕的解决方案。
我们在不同的服务器上为不同的客户端托管了 20 个这样的应用程序,确保每晚都重新启动的协调似乎是错误的。
小智 12
“最佳实践”(许多人出于充分理由而做的事情)与“常见实践”(许多人因为懒惰和/或无知而做的事情)之间存在差异。
需要进行常规重新启动或重新启动,继续运行良好的应用程序和(差)的服务器是很常见的。但这也清楚地表明您有一个严重的错误。
通过使 SOP 定期重新启动应用程序,您的公司在地毯下隐藏了一个严重的错误。这是不可原谅的,虫子需要被压扁,否则它会回来咬你。
理想情况下,您的公司应该找到更好的开发人员。不幸的是,这可能会导致重写大量代码的工作量相当大。开发人员要么认为写得不好的代码是可以接受的,要么不知道足以识别错误代码的症状,这一事实表明代码质量低下。一个好的开发商在宪法上不能让它留在那个状态。
鉴于您可能无法取代开发人员,有一些建议:
即使不涉及面向开发人员的分析工具,也有大量面向系统管理员的工具用于分析和监控 Java 应用程序的内存使用情况。无论如何,您确实应该在生产服务器上设置内存(尤其是堆)监控。即使您正在运行高质量的代码,我也会推荐这个。当您的错误应用程序即将倾倒时,它可能会提前警告您。
但更好的是,这些应该可以帮助您收集存在泄漏的证据,甚至可以指出应用程序中的问题所在。这将为您提供更好的弹药来游说修复它。