2009-09-15 76 views
1

我的一个应用程序在运行Java 1.6的Tomcat 5.5的Windows服务实例上运行。如果SOAP请求超时,那么应用程序创建NullPointerException的代码中存在问题。NullPointerExceptions在停止发生后会导致Tomcat性能问题吗?

今天早上,我们有一个问题,SOAP请求另一端的组件不可用。结果是大约一万个NullPointerExceptions。我们再次运行失败的组件后,异常停止。但是,我们注意到我们的应用程序仍然表现不佳。

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

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

谢谢!
IVR复仇者

+0

应用程序是否抛出NPE或在堆栈上抛出了更低的东西? – 2009-09-28 19:05:45

+0

SOAP请求返回null,因为其他系统超时。我们的代码(直到今天晚上)没有处理无效响应,导致NPE。 – 2009-10-01 01:37:42

回答

2

有许多可能的问题:

  • 例外引起了内存泄漏。
  • 异常在某些线程中导致无限循环。
  • 重新加载应用程序会导致内存泄漏。
  • HotSpot针对失败例外情况进行了优化(应该很快重新排序)。
0

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

例如,当我们有很多例外情况时,我们遇到了类似的问题。我们有一个包含所有用户会话的全局会话对象。我们通常在请求完成时清理它。但是,我们没有做一个finally块,所以在异常情况下它不会被清除。这会导致内存泄漏并降低服务器速度。

Tomcat重启后一般会变得更快,所以它可能是正常的,取决于你得到多少改善。

0

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

相关问题