关键可视化工具:观察分布式数据库以发现未知

2020-04-22 郑盛郑,迪安罗,文轩石,埃德黄 产品

作者:相声郑迪安罗文选史(PingCAP软件工程师)埃德黄在PingCAP(首席技术官)

杂种:Caitin陈编辑器:Queeny金汤姆,政府高级官员

诊断性能问题

你看过数据库工作量的“看起来”吗?

分布式数据库是逻辑上相互连接的多台机器的集合,而物理上它们分布在计算机网络的不同站点上。解决分布式数据库中的问题是挑份的,因为有关系统的信息分散在不同的机器中。对于这种系统,我们需要一个全局的系统视图,能够观察系统来发现未知以回答以下问题。我们可以快速检测热点和潜在风险吗?我们可以直观地监控其运行时状态吗?我们可以找到一种方法来预测分布式数据库是否可以稳定运行很长时间?

谷歌的Cloud Bigtable是非关系型的NoSQL数据存储系统,有一个诊断工具叫做关键可视化器,这会生成可视报告,以帮助用户快速识别热点。我们可以在开源中开发类似的工具NewSQL分布式数据库?

受谷歌的Key Visualizer的启发,我们实现了Key Visualizer (KeyViz)TiDB,分布式,关系,NewsQL数据库。关键可视化器将在TIDB 4.0中提供,这将在今年晚些时候提供。此工具使用不同的颜色来显示群集中不同区域的访问频率和流量。键可视化器以图形方式显示系统状态,这有助于数据库管理员(DBA)快速解决数据库性能问题,并使用户能够深入了解其应用程序

关键可视化器

在这篇文章中,我们将深入探讨Key Visualizer是什么,它是如何工作的,它如何帮助您,以及它适用于哪些场景。如果您是一名DBA或数据库开发人员,我们希望您能够将这些知识应用到自己的工作中。例如,如果您是一名开发人员,您可以为自己的应用程序采用TiDB和Key Visualizer,甚至可以设计一个类似的工具来排除系统故障。

为什么键可视化器?

自2015年4月以来,我们在pingcap.已经建立TiDB,一个开源分布式SQL数据库,支持混合事务处理和分析处理(HTAP)工作负载。

在TIDB集群中,如果只有少数节点忙于其他节点,则表示群集中存在热点。作为分布式数据库,TIDB会自动移动节点之间的数据以平衡群集中的负载。但有时,当应用程序的工作量突然增加时,可能会发生热点并触发节点中的瓶颈。在分布式架构中,单个节点的瓶颈可能会影响整个群集的性能。因此,能够快速找到热点的根本原因是数据库操作的关键任务。在随后的博客帖子中,我们将在TIDB中引入功能,以缓解自动缩放和基于负载的分割等热点。

对于4.0以前版本的TiDB,诊断热点问题既繁琐又耗时。诊断过程通常涉及使用各种工具来检查不同的组件,并对应用程序逻辑进行深入分析。具体来说,DBA可能:

  1. 检查每个节点的CPU和I / O使用是否均衡。

  2. 根据群集的热点区域查看热表。

  3. 分析每个热表的应用程序逻辑,查找热点原因。

这只是一个开始。故障排除可能是一个冗长的过程。因此,我们需要一个工具来促进故障排除。

什么是关键可视化工具?

密钥Visualizer是一种可视化诊断工具,可随时观看其TIDB群集的读写音量。密钥Visualizer提供了应用程序状态的图形表示。如果您担心数据隐私,请注意,关键可视化器的数据不包含有关应用程序的机密信息。

Key Visualiser使用热图显示读和写流量。下面是一个例子:

可视化工具的热图的关键

可视化工具的热图的关键

在热爱:

  • x轴表示时间。
  • y轴表示键范围,以及键范围到表和索引的映射。
  • 颜色表示键范围的读取或写入卷。读取或写入卷越明亮。

下面的示例演示如何推断热图的底层工作负载。

示例#1:均匀分布的工作负载

均匀分布的读取或写入

均匀分布的读取或写入

在这个热图中,明亮的颜色和黑暗的颜色是一个精细的混合。这表明读或写是均匀分布在时间和关键范围之间的。这表明工作负载均匀分布到所有节点。

示例#2:顺序读取或写入

顺序读取或写入

顺序读取或写入

在这张热图中,我们可以看到一条明亮的线。这意味着数据的读写是顺序的。典型的顺序数据读写场景是导入数据或扫描表和索引。例如,我们不断地将数据写入id为自动递增的表中。

注意,与亮线对应的关键范围是热点,这通常是性能瓶颈。

Key Visualizer如何帮助您?

我们可以使用Key Visualizer来监视集群的运行状况;然而,它比监视工具要强大得多。通过可视化和易于理解的报告,Key Visualizer使用户能够轻松诊断集群问题,并获得有关其应用程序的更深入的知识。我们还可以将Key Visualizer提供的数据与机器学习相结合,为应用程序提取更多的见解。

允许用户观察系统并诊断集群问题

键VisureIter让用户清楚地观察系统的运行状态,以便用户甚至是如此经验丰富的系统,可以正确诊断系统问题。

传统上,应用程序开发人员和dba对数据库工作负载没有一个清晰的全局视图。他们使用诸如每秒查询(QPS)、每秒事务(TPS)、查询执行时间和机器负载(CPU、网络、磁盘等)等指标来推断数据库的运行状态。更重要的是,在分布式架构中,他们必须挖掘大量的指标来获取有用的信息。

与医生使用计算机断层扫描(CT)查找症状的根本原因类似,TiDB用户可以使用Key Visualizer直接观察键范围级别的工作负载,并对其有一个清晰的视图。

提供对应用程序更深入的见解

许多数据库公司都面临用特定应用程序评估数据库的问题。传统上,他们可以获得的信息非常有限,通常通过询问应用程序的QPS、TPS、读/写比率、数据大小、数据分布、表模式和应用程序开发人员的典型查询来获得。在许多情况下,应用程序开发人员不知道这些指标,或者因为过于敏感而无法共享。作为一个结果,判断数据库是否适合应用程序是很困难的

使用Key Visualizer,为了评估TiDB是否与应用程序匹配,我们只需要记录生产流量,并使用Key Visualizer观察集群状态。此外,Key Visualizer的可视化报告可以提供对申请的见解并建议改进申请

在这里,我们将更深入地探讨监视和观察系统之间的区别。监控重点已知的指标,如CPU负载,内存,TP和QPS等。但是,监控具有有限的值,因为它仅反映了特定方案的系统,例如系统是否达到其容量。但随着我们的系统变得越来越复杂,我们需要观察一个系统,可以发现未知数

用机器学习带来更多的可能性

通过将机器学习模型应用到Key Visualizer的数据上,我们可以对应用程序获得更多的见解。例如,我们可以预测未来的应用程序工作负载,并通过容量规划为之做好准备。还有很多我们可以想象的可能性,这就是观察一个系统的力量。

典型场景

在本节中,我们将讨论关键可视化器的一些典型方案。

识别错误

我们希望与您分享一个使用关键视觉仪识别错误的真实世界的故事。使用关键可视化器,我们能够在我们的TPC-C基准测试程序中发现TIDB的错误。这是TPC-C基准期间的一个热爱图:

在TPC-C测试中读取TIDB的流量

在TPC-C测试中读取TIDB的流量

从热图中,我们可以看到,在性能测试阶段,Key Visualizer证明了bmsql_new_order.表在读取流量中有热点。

根据TPC-C测试模型,在性能测试阶段,大量SQL语句从该表读取索引。然而,热图中显示的读取流量比预期高得多。

这些异常行为使我们认为TIDB的代码可能存在错误。我们发现缺少优化器实现。修复了错误后,该指数的平均流量减少了75%,而TPC-C的性能得到改善。

发现应用程序负载更改

数据库上的负载可能会随着时间的推移而缓慢变化。例如,顾客的需求或注意力逐渐转移。使用Key Visualizer,我们可以在粒度级别上观察应用程序负载。通过分析应用程序负载的历史数据,我们可以快速发现变化的趋势,并抓住营销和业务机会。

遵守应用程序的健康

随着微服务体系结构的发展,系统监控变得越来越具有挑战性。使用Key Visualizer,我们可以观察数据库负载(通常是最重要的组件)中的变化,从而可以及时识别应用程序异常。

模拟具有高流量卷的场景

使用Key Visualizer,我们可以模拟促销等场景,预测未来的交通模式,并制定行动计划来处理这种情况。当生产环境中出现类似的交通模式时,我们可以通过行动计划轻松应对。

试试看

如果你对Key Visualizer感兴趣,你可以按照以下步骤来尝试它:

  1. 执行以下操作之一:

    • 如果您已经部署了TiDB集群,请启动主版本放置驱动程序(PD),整个群集的管理组件。
    • 如果你还没有部署TiDB,使用TiUP部署TiDB和运行tiup操场每晚启动TIDB集群。
  2. http://PD_ADDRESS:2379/dashboard开始使用Key Visualizer。

注意:

如果修改了PD的默认端口,则需要更新http://PD_ADDRESS:2379/dashboard到实际的PD端口。

路线图

Key Visualizer是一个位于tidb仪表板.Key Visualizer正在积极开发中。未来,我们计划:

  • 在Key Visualizer重启时保留统计信息。
  • 支持TiKV-only场景。
  • 在热图中区分读写流量。
  • 优化热图亮度的计算,使热点更容易找到。

欢迎你参加我们的活动TIDB可用性挑战.我们期待您的贡献。

结论

对分布式SQL数据库进行故障排除一直是一个挑战。通过Key Visualizer, TiDB用户可以观察系统状态,快速发现集群中的性能问题,并深入了解应用程序。这也有助于TiDB用户识别应用程序中的变化,从而发现新的业务机会。

键可视化器将在TIDB 4.0中提供。此外,TIDB 4.0将提供一个仪表板,让用户在一个地方检查群集拓扑和运行时状态,操作参数,系统日志,异常度量和基本性能指标。TIDB仪表板将帮助DBA更好地了解系统状态,并显着提高其故障排除效率。

故障排除

准备开始用TIDB开始吗?