NullPointerExceptions可以在它们停止发生后导致Tomcat性能问题吗?

时间:2009-09-15 18:35:06

标签: java performance jsp tomcat nullpointerexception

我的一个应用程序在运行Java 1.6的Tomcat 5.5的Windows Service实例上运行。我们在代码中遇到了一个问题,如果SOAP请求超时,应用程序会创建NullPointerException。

今天早上我们遇到了一个问题,即SOAP请求另一端的组件不可用。结果是大约一万个NullPointerExceptions。在我们再次运行故障组件后,异常停止。但是,我们注意到我们的申请仍然表现缓慢。

重新启动Tomcat服务后,应用程序性能立即得到改善。我发现这只是一个方便的巧合,但我的队友们持怀疑态度。

是否所有这些NPE都可能在Tomcat中导致性能问题,但异常停止后很久?

谢谢!
IVR Avenger

3 个答案:

答案 0 :(得分:2)

存在许多可能的问题:

  • 异常导致内存泄漏。
  • 异常导致某些线程无限循环。
  • 重新加载应用程序导致内存泄漏。
  • HotSpot针对异常失败的情况进行了优化(应该很快就能自行排序)。

答案 1 :(得分:0)

我认为NPE不会特别引起任何问题,但如果处理不当,Exception可能会导致问题。

例如,当我们有很多例外时,我们遇到了类似的问题。我们有一个包含所有用户会话的全局会话对象。我们通常会在请求完成后将其清理干净。但是,我们没有执行finally块,因此在发生异常时不会进行清理。这会导致内存泄漏并降低服务器速度。

Tomcat通常在重启后变得更快,因此取决于你获得了多少改进,这可能是正常的。

答案 2 :(得分:0)

Tomcat记录所有活动在您的情况下“一万个NullPointerExceptions” 跟踪性能的一种方法是尝试捕获该感知并忽略。显然这不是解决方案,但你可以尝试发生的事情。