Java运行时监控,第3部分: 监控应用程序生态系统的性能与可用性(2) - 编程入门网
、最大和平均读数。
Java运行时监控,第3部分: 监控应用程序生态系统的性能与可用性(2)(13)时间:2011-02-13 IBM Nicholas Whitehead指标类型。 中央计时器会在每个时间段末尾触发一个刷新事件。当计时器触发后,收集器总计循环缓冲器索引是递增的,而历史缓存事件被传递给缓冲器中的下一个缓存。然后 “关闭的” 缓冲器中的每一个聚合的总计都会有一个公用的时间戳应用于该总计,并被写入待存入数据库的持久化队列。 注意当循环缓冲器递增时,下一个缓冲元素的最小的、最大的和平均值将会是零,除了 sticky 指标类型。 持久化线程池中的一池线程从持久化队列中读取总计项并将它们写入数据库。 相同收集器总计被合并的总计时间段的长度要取决于中央刷新计时器的频率。该时间段越长,写入数据库的数据就越少,代价是数据粒度将会丢失。 标准化数据库结构与扁平数据库结构 一些专用数据库(比如 RRDTool)可以用于指标存储,但是通常使用的是关系数据库。在关系数据库中执行指标存储时,需要考虑两个一般选项:标准化数据或保持一种更加扁平的结构。这主要关系到如何存储复合指标名称;根据数据建模最佳实践,应该对所有其他引用数据进行标准化。 完全标准化的数据库结构的好处在于,通过将指标复合名称分解为独立的片段,实际上任何数据库都可以利用索引功能来加速查询。它们存储的冗余数据更少,从而使数据库更小,数据密度更高,性能也更好。其缺点在于复杂性和查询的大小:即使相对简单的复合指标名称或指标名称的模式(例如主机 11 到 93 之间的 % User CPU)都要求 SQL 包含一些连接和大量谓词。这个缺点可以通过使用数据库视图和硬存储常用指标名解码来减轻。每个单独指标的存储需要分解复合名称来定位指标引用数据项(或创建一个新的引用数据项),但是这种性能开销可以通过在持久过程中缓存所有引用数据来减轻。 图 23 展示一种用于在标准化结构中存储复合指标的模型: 图 23. 一种用于指标存储的标准化模型 在图 23 中,为每个惟一的复合指标分配了一个惟一的 METRIC_ID,为每个惟一的片段分配了一个 SEGMENT_ID。然后在一个包含 METRIC_ID、SEGMENT_ID 和片段出现顺序的关联实体中构建复合名称。指标类型存储在引用表 METRIC_TYPE 中,而指标值本身存储在 METRIC_INSTANCE 中(包含值、时间戳的开始和结束属性,以及对指标类型和惟一 METRIC_ID 的引用)。 另一方面,扁平模型结构非常简单,如图 24 所示: 图 24. 用于指标存储的扁平模型 Java运行时监控,第3部分: 监控应用程序生态系统的性能与可用性(2)(14)时间:2011-02-13 IBM Nicholas Whitehead在本例中,我将指标名称从复合名称中分离开来,剩余的片段仍然保持其在 segments 列中的原有模式。同样,如果实现的数据库引擎能够使用基于模式的谓词(比如正则表达式)执行适合较宽的文本列的查询,那么这种模型非常易于查询。这种优点应当重视。使用简化的查询结构,能够显著地简化数据分析、可视化和报告工具,而且在紧急的分类会话期间,加快查询的编写速度可能是最重要的方面! 如果需要持久化数据存储,挑选正确的数据库是非常关键的一步。使用关系数据库是一种可行的方法,因为关系数据库能够很好地执行,并且可以从中提取数据并针对您的需要进行格式化。时间序列驱动的数据的生成比较复杂,但是通过正确地分组和聚合 —— 以及使用其他工具,比如 JFreeChart(参见 参考资料)—— 可以生成出色的典型报告和图表。如果想要实现一种更加专门化的数据库(比如 RRDTool),那么请做好心理准备,因为这种数据库的提取和报告需要很长时间。如果数据库不支持 ODBC、JDBC 等标准,那么将不能使用常 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |