跳转到内容

策略

策略检测与事务相关的异常状况。每个事务定义都关联有策略定义。

策略会产生以下异常事务状态:

  • :事务被归类为慢的阈值可以指定为绝对时间,也可以指定为相对于该事务定义所生成事务平均耗时的 相对百分比值。
  • 很慢:与“慢”类似的另一个基于时间的阈值,只是对应更严重的类别。可以对“慢”和“很慢”进行划分,使得 “慢”事务出现时可以不发送通知,而“很慢”事务触发通知。
  • 超时未完成:在第三个基于时间的阈值(通常是绝对时间,且远大于“很慢”阈值)之后,可以将事务视为 已死锁或挂起。
  • 错误:出错的事务需要特别关注。错误有两个来源:
    1. 异常:派生自 java.lang.Error(错误)、java.lang.RuntimeException(运行时异常)和 java.lang.Exception(受检异常)的异常可以分别启用。受检异常通常由应用程序处理,不一定会导致事务错误。
    2. 记录的错误:如果应用程序通过日志框架记录了错误,jvmguard 可以为该事务标记错误。jvmguard 支持 java.util.logging、log4j、JBoss logging 和 Logback。也可以选择配置警告同样导致事务错误。

如果某个事务定义没有定义策略,jvmguard 会继续在事务定义列表中查找,直到找到启用了策略定义的匹配条目。这样 就可以为多个事务定义定义相同的策略,最极端的情况是使用一个“兜底”条目,它没有命名定义,只有策略定义。

有时则需要反其道而行之,为单个事务定义中的某些事务定义更细粒度的策略。例如,可能有一个捕获了大量调用的 事务定义。如果可接受的耗时取决于事务名称,可以定义策略特化,从而避免多次重复添加事务定义及其命名方案。

与父事务定义不同(此处父定义按类过滤),策略特化按事务命名的结果进行过滤。

事务数据视图有三个选项卡:调用树热点超时未完成。在调用树和热点中,每个事务都会以颜色和 前缀显示其策略状态,因此可以一目了然地看出哪些事务是慢的、很慢的或出错的。超时未完成选项卡只显示超过 其策略超时未完成阈值的事务,也就是挂起或死锁的事务。

要聚焦特定的策略状态,打开筛选栏(漏斗图标)中的事务状态筛选器,然后选择“慢”、“很慢”或“错误”。树会 缩减为匹配的事务及其祖先节点,因此上下文得以保留。如果同时输入了筛选文本,则只在匹配的事务中搜索该文本。