0

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

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

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

谢谢,阿迪亚。

4

2 回答 2

2
  1. 是的,特别是因为开发人员还没有经历过并且至少将这些包含在自定义异常中。否则,它们应该作为警告输出到日志文件。日志库的存在是有原因的。
  2. 如果异常是真实的,那么可能是由于代码被破坏或数据集发生变化。我建议至少跟踪一项工作以了解错误发生的原因。之前在工作中处理过 PB 级的数据,我知道这有多令人沮丧,但如果该工作的输出随后被消耗并给您带来问题,您以后将不得不付出代价。
  3. 如果抛出异常的计算路径相对较轻,那么与任何计算相比,来自异常的 IO 和函数调用将花费很多。但是,鉴于您在 45 分钟内只有 11k 异常,即每秒 4 次。当然这很糟糕,但假设没有其他应用程序也执行大量 IO,那么这不会严重阻碍您的工作。
于 2012-07-18T04:05:09.100 回答
1

对此的明显反应将是

  1. 您的批处理作业试图做的很多事情很可能没有完成。
  2. 但你永远不知道,一个疯狂的开发人员会尝试在一个 catch 块中修复问题,然后吃掉异常(假阴性)
  3. 如果代码一直工作到现在并且刚刚开始抛出异常,则可能是您的数据集已更改或开发人员正在抛出正确的异常。
于 2012-07-18T03:58:55.493 回答