我有更多关于意见和经验的问题,而不是技术解决方案。
您如何看待在生产环境中通过JMX控制台打开Hibernate统计信息和Ehcache统计信息?它似乎是一个好的或可怕的想法?为什么?
此致
答案 0 :(得分:2)
在我看来,这里有两个突出的问题:
我们假设#1是真的(否则为什么我们在这里?:))
就#2而言,无论是否有统计数据,您都必须在负载下测试您的应用程序,但我的经验是两个statstics组件的性能影响可以忽略不计。此外,定期收集和分析这些统计信息可能会带来改进,因为它可能会帮助您找到未使用缓存的瓶颈或系统部分。
我想你可以说有更好的方法来挖掘这些信息,比如让后台线程定期将统计信息写入日志文件,这适用于更简单的指标,如“元素如何在缓存中”,但许多统计数据如果核心引擎没有启用统计信息(就像大多数Hibernate的指标一样),那么将无法使用。此外,JMX已经走了很长一段路,并且有各种创造性的方法可以访问和分析/报告/可视化它所公开的数据。
希望这有用。
答案 1 :(得分:2)
我所使用的产品拥有一切 - Hibernate统计数据,Ehcache统计数据,JMX等等。但我们通过我们的特殊后端(而不是JMX)公开Hibernate / Ehcache信息,后端只能由管理员用户访问,并使用JMX监视绑定到我们的SLA合同的各种事物。但是如果你的产品没有这样的后端,那么通过JMX公开db / cache stats对我来说听起来不是一件坏事。
在生产环境中启用统计数据并不是什么大问题。每笔交易的费用大约为AtomicLong
incrementAndCount
,这几乎是免费的。除非您每秒处理数百万笔交易,否则您不会发现任何差异。