OpentTsdb官方文档中文版----查询性能
缓存
此时OpenTSDB没有内置缓存(除了将缓存PNG图像文件60秒的内置GUI)。因此只能依靠底层数据库的缓存。在HBase(最常见的OpenTSDB后端)中,有一个块缓存的概念,它可以在写入 和/或 读取时在内存中存储行和列的块。Nick Dimiduck的Block Cache 101是一个很好的入门书。设置缓存的一个好方法是使用BucketCache缓存并将L1缓存大小设置得相当大,这样它就可以充当写缓存并将大部分最新数据保存在内存中。然后,当用户运行查询时,L2缓存可以将经常查询的数据保存在内存中。
仔细观察region server的GC暂停。用户通常在堆外模式下运行bucket cache,但在堆外缓存命中和写入操作中,Java和JNI之间的序列化操作仍有一定的代价。
另外,请确保HBase表已启用压缩。块使用表中指定的压缩算法存储在内存中,因此与未压缩的块相比可以将更多压缩块放入缓存中。
One Out of Many Queries
如果通常在某个指标中查找一个或两个时间序列的查询(即多个标签值不同),请确保使用了2.3或更高版本且在查询中启用了explicitTags。查询必须列出与正在查找的数据相关联的所有标签key,但它会启用HBase上的特殊过滤器,这将有助于减少扫描的行数。详情请参阅查询过滤器。
或者,如果在指标名称中放置高基数的标签,这将大大减少查询时扫描的数据量并提高性能。请参阅编写数据以获取更多信息
高基数查询
对于将许多时间序列聚合在一起的查询,提高性能的最佳方法是在启用salting的情况下运行OpenTSDB 2.2或更高版本,并在HBase集群中运行多个regionserver。这将并行执行查询,从每个regionserver获取数据子集并合并结果。例如,对于单个regionserver,查询可能需要10秒才能完成。使用salting将相同的数据写入5个regionserver时,相同的查询大约花费2秒,它是由最慢的regionserver响应所需的时间决定的。合并集合通常是微不足道的。
宽时间范围查询
如果在TSD和消费应用程序(例如UI或API客户端)之间观察到瓶颈,那么查看宽时间范围(例如几个月或几年)的查询可以使用降采样,并从中受益。使用降采样器将减少由TSD序列化并发送给用户的数据量。
但是,如果存储(HBase)和TSD之间存在瓶颈,那么最好的解决方案是使用OpenTSDB 2.4或更高版本开始写入上卷数据。这需要外部系统计算基于时间的上卷并将其写入存储。或者,UI或API客户端可针对较小时间范围跨度的多个TSD执行多个查询并将结果合并在一起。未来我们计划直接向TSD添加这些功能。
通用优化
需要考虑的其他事项:
多个可读TSD
运行多个专用于读取数据的TSD,并在它们的前面放置负载均衡器。这是运行OpenTSDB时观察到的最常见的设置,允许在不关闭整个系统的情况下轮换升级TSD。
调优存储
HBase有许多可以调整的参数,一般而言,大多数OpenTSDB的瓶颈都来自HBase。确保监视服务器,特别是队列,缓存,响应时间,CPU和GC。
教育用户
没有数据库系统可以避免长时间运行或资源浪费查询。要求用户从较小的时间范围开始,如1小时,并逐渐增加时间范围。还有帮助用户了解基数,以及如何请求high_cardinality_tag_key=*可能是一个坏主意。
转载于:https://blog.51cto.com/1196740/2163011
OpentTsdb官方文档中文版----查询性能相关推荐
- OpentTsdb官方文档中文版----上卷和预聚合
虽然TSDB被设计为只要有空间就可以存储原始全分辨率(resolution)的数据,但是对于广泛的时间范围或在许多标签组合之上的查询可能是相当痛苦的.这样的查询可能需要很长时间才能完成,或者在最糟 ...
- Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(下)
Hyperledger Fabric 2.0 官方文档中文版 第6章 教程下 总目录 6.教程(下) 使用CouchDB 为什么使用CouchDB? 在Hyperledger Fabric中启用Cou ...
- Hyperledger Fabric 2.0 官方文档中文版 第3章 关键概念
Hyperledger Fabric 2.0 官方文档中文版 第3章 关键概念 总目录 3.关键概念 引言 什么是区块链? 区块链为什么有用? 什么是Hyperledger Fabric? Hyper ...
- Hyperledger Fabric 2.0 官方文档中文版 第5章 开发应用程序
Hyperledger Fabric 2.0 官方文档中文版 第5章 开发应用程序 总目录 5.开发应用程序 情景 PaperNet网络 介绍参与者 分析 商业票据生命周期 交易 账本 过程和数据设计 ...
- TensorFlow 官方文档中文版发布啦(持续维护)
TensorFlow 是 Google 研发的第二代人工智能学习系统,是 Google 为了帮助全球开发者们更加方便和高效地开发机器学习 (Machine Learning)和人工智能 (AI) 应用 ...
- TensorFlow 官方文档中文版发布啦(持续维护) 1
TensorFlow 是 Google 研发的第二代人工智能学习系统,是 Google 为了帮助全球开发者们更加方便和高效地开发机器学习 (Machine Learning)和人工智能 (AI) 应用 ...
- jQuery 1.4官方文档中文版
jQuery 1.4在本月早些时候发布了.这个版本包含了大量的编程,测试和记录文档的工作.这份官方文档总结了jQuery 1.4当中加入的变更和功能,很多常用和热门的方法被重写,性能得到了很大的提升. ...
- Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(上)
Hyperledger Fabric 2.0 官方文档中文版第6章 教程上 总目录 6.教程(上) 将智能合约部署到通道 启动网络 Logspout设置 打包智能合约 安装链码包 批准链码定义 将链码 ...
- solidity 中的时间_Solidity官方文档中文版.pdf
汇智网 H Solidity 官方文档中文版 导读 以太坊是什么? 以太坊是一个全新开放的区块链平台,它允许任何人在平台中建立和使用通过 区块链技术运行的去中心化应用.就像比特币一样,以太坊丌受任何人 ...
最新文章
- nginx 的proxy_cache才是王道
- JSP内置对象-request
- flex 3 使用手册
- rabbitmq安装完整版
- Matlab冒号操作符图解
- 大众点评订单系统分库分表实践
- 【C++】 54_被遗弃的多重继承 (下)
- 创意合成广告欣赏:让人脑洞大开的设计
- linux如果时间等于22点,Linux下ntpdate时间同步
- ubuntu18 mysql5.6源码_Ubuntu 18.04 使用Systemd管理MySQL 5.6
- 指南-AT应用指南-AT指令指南-音频播放和TTS
- Python:实现password generator复杂密码生成器算法(附完整源码)
- 解读《美国国家BIM标准》 – BIM能力成熟度模型(二)
- LINUX操作命令汇总(zt)
- STA静态时序分析/Formality形式化验证
- 英文论文查重规则是什么?
- linux停止阿里云盾服务
- .Net Core裁剪图片并存入数据库
- Non-local:用于捕获长距离依赖关系
- 最新API接口(亲测可用)及其使用教程