通过JMX生产的Hibernate和Ehcache统计数据

时间:2013-02-07 13:44:14

标签: performance hibernate caching jmx ehcache

我有更多关于意见和经验的问题,而不是技术解决方案。

您如何看待在生产环境中通过JMX控制台打开Hibernate统计信息和Ehcache统计信息?它似乎是一个好的或可怕的想法?为什么?

此致

2 个答案:

答案 0 :(得分:2)

在我看来,这里有两个突出的问题:

  1. 统计数据是否有用,是否可以在JMX中发布时以有用的方式访问它们?
  2. 统计数据的启用是否会影响系统的整体性能?
  3. 我们假设#1是真的(否则为什么我们在这里?:))

    就#2而言,无论是否有统计数据,您都必须在负载下测试您的应用程序,但我的经验是两个statstics组件的性能影响可以忽略不计。此外,定期收集和分析这些统计信息可能会带来改进,因为它可能会帮助您找到未使用缓存的瓶颈或系统部分。

    我想你可以说有更好的方法来挖掘这些信息,比如让后台线程定期将统计信息写入日志文件,这适用于更简单的指标,如“元素如何在缓存中”,但许多统计数据如果核心引擎没有启用统计信息(就像大多数Hibernate的指标一样),那么将无法使用。此外,JMX已经走了很长一段路,并且有各种创造性的方法可以访问和分析/报告/可视化它所公开的数据。

    希望这有用。

答案 1 :(得分:2)

我所使用的产品拥有一切 - Hibernate统计数据,Ehcache统计数据,JMX等等。但我们通过我们的特殊后端(而不是JMX)公开Hibernate / Ehcache信息,后端只能由管理员用户访问,并使用JMX监视绑定到我们的SLA合同的各种事物。但是如果你的产品没有这样的后端,那么通过JMX公开db / cache stats对我来说听起来不是一件坏事。

在生产环境中启用统计数据并不是什么大问题。每笔交易的费用大约为AtomicLong incrementAndCount,这几乎是免费的。除非您每秒处理数百万笔交易,否则您不会发现任何差异。