Java中引发的大量异常

时间:2012-07-18 03:53:27

标签: java exception-handling application-server

我们被要求监控正在运行的批处理作业的性能。批处理作业在Jeus Application Server上运行,并在48核HP UX服务器上运行。有问题的批处理作业有大约1500个线程。发生最大值的异常是NumberFormatException。批处理作业不会终止,但会继续运行。

在使用HPJmeter进行监控时,我注意到有数千个异常被抛出。 NumberFormat只是其中一种,但还有更多。我有以下问题:

  • 这表明设计/编码不好吗?
  • 应用程序服务器通常会处理很多异常而不报告它们吗?
  • 这是否会影响正在运行的应用程序的性能? (在大约45分钟的跑步中大约有11000个例外)

谢谢, 阿迪亚。

2 个答案:

答案 0 :(得分:2)

  1. 是的,特别是因为开发人员没有经历过,至少将这些包装在自定义异常中。否则,应将它们作为警告输出到日志文件中。存在记录库的原因。
  2. 如果异常是真实的,则可能是由于代码被破坏或数据集发生变化。我建议至少跟踪一项工作,以了解错误发生的原因。之前在工作中处理过PB级数据后,我明白这有多么令人沮丧,但是如果此作业的输出随后被消耗并导致问题,那么你将无法支付以后的费用。
  3. 如果抛出异常的计算路径相对较轻,则与任何计算相比,来自异常的IO和函数调用将花费很多。但是,考虑到你在45分钟内只有11k例外,那就是4秒。当然这很糟糕,但假设没有其他应用程序也执行大量IO,那么这不会太严重阻止你的工作。

答案 1 :(得分:1)

对此的明显回应将是

  1. 您的批处理工作正在尝试做的很多事情很可能都没有完成。
  2. 但是你永远都不知道,一个疯狂的开发人员会尝试修复一个阻塞区域中的事情而只是吃掉异常(假阴性)
  3. 如果代码一直工作到现在并且刚开始抛出异常,可能是您的数据集发生了变化,或者开发人员抛出了正确的异常。