我们有一个在Tomcat上运行的web应用程序(由第三方开发)。我们从应用程序中得到了非常糟糕的性能。应用程序开发人员声称,每晚重新启动web服务器、释放所有内存使用并重新启动是行业最佳做法。
从客户的角度来看,这可以缓解站点在白天崩溃的问题,但从SysAdmin的角度来看,这是一个糟糕的解决方案。
我们为不同的客户端在不同的服务器上托管了20个应用程序,而确保所有应用程序每晚都重新启动的协调似乎是错误的。
发布于 2010-02-03 23:30:57
这当然不是最佳做法。虽然定期重新启动服务器是很好的,只是为了确保一切正常进行,但是需要每晚重新启动,指出应用程序中存在非常严重的内存泄漏。
发布于 2010-07-09 16:01:32
“最佳实践”是有区别的,很多人做的事情都是有充分理由的,而“常规实践”是很多人因为懒惰和/或无知而做的事情。
应用程序和(更糟糕的)服务器需要常规地重新启动或重新启动才能保持良好运行是相当常见的。但这也是一个明确的迹象,你有一个关键的错误。
通过使SOP定期重新启动应用程序,您的公司正在隐藏一个严重的错误。这是不可原谅的,错误需要面对和挤压,否则它会回来咬你以后。
理想情况下,您的公司应该找到更好的开发人员。不幸的是,这可能导致大量的代码重写工作。开发人员要么认为编写得不好的代码是可以接受的,要么不知道如何识别buggy代码的症状,这表明代码的质量很低。一个好的开发商在宪法上是不可能把它留在那个州的。
考虑到您可能无法取代开发人员,以下几点建议:
即使没有进入面向开发人员的分析工具,也有大量面向sysadmin的工具用于分析和监视Java应用程序上的内存使用情况。在任何情况下,您都应该在生产服务器上设置内存监视(特别是堆)。即使您正在运行质量代码,我也会建议您这样做。当你的程序即将崩溃时,它可能会给你预先警告。
但是更好的是,这些应该可以帮助您收集有漏洞的证据,甚至可能指出应用程序中的问题所在。这将给你更好的弹药游说,以使它被修复。
发布于 2010-02-04 00:04:20
应用程序开发人员更有可能声称,通过绕过他所做的非专业工作来保护他的利益,对他来说是最有利的。他可能还没有真正承认他写的东西有着惊人的记忆泄漏,但离它不远了。
https://serverfault.com/questions/109362
复制相似问题