我的一个应用程序在运行Java 1.6的Tomcat 5.5的Windows Service实例上运行。我们在代码中遇到了一个问题,如果SOAP请求超时,应用程序会创建NullPointerException。
今天早上我们遇到了一个问题,即SOAP请求另一端的组件不可用。结果是大约一万个NullPointerExceptions。在我们再次运行故障组件后,异常停止。但是,我们注意到我们的申请仍然表现缓慢。
重新启动Tomcat服务后,应用程序性能立即得到改善。我发现这只是一个方便的巧合,但我的队友们持怀疑态度。
是否所有这些NPE都可能在Tomcat中导致性能问题,但在异常停止后很久?
谢谢!
IVR Avenger
答案 0 :(得分:2)
存在许多可能的问题:
答案 1 :(得分:0)
我认为NPE不会特别引起任何问题,但如果处理不当,Exception可能会导致问题。
例如,当我们有很多例外时,我们遇到了类似的问题。我们有一个包含所有用户会话的全局会话对象。我们通常会在请求完成后将其清理干净。但是,我们没有执行finally块,因此在发生异常时不会进行清理。这会导致内存泄漏并降低服务器速度。
Tomcat通常在重启后变得更快,因此取决于你获得了多少改进,这可能是正常的。
答案 2 :(得分:0)
Tomcat记录所有活动在您的情况下“一万个NullPointerExceptions” 跟踪性能的一种方法是尝试捕获该感知并忽略。显然这不是解决方案,但你可以尝试发生的事情。