写点什么

TiDB v8.0 组件 TiProxy 测试

  • 2024-04-05
    北京
  • 本文字数:1776 字

    阅读完需:约 6 分钟

作者: 像风一样的男子原文来源:https://tidb.net/blog/bf37b9ec


近日 TiDB 发布了 8.0 DMR 版本,更新了好几个新功能,期中就有大家期待的代理组件 TiProxy 成为正式功能 (GA)。


TiDB v7.6.0 引入了代理组件 TiProxy 作为实验特性。TiProxy 是 TiDB 的官方代理组件,位于客户端和 TiDB server 之间,为 TiDB 提供负载均衡、连接保持功能,让 TiDB 集群的负载更加均衡,并在维护操作期间不影响用户对数据库的连接访问。


在 v8.0.0 中,TiProxy 成为正式功能,完善了签名证书自动生成、监控等功能。


TiProxy 的应用场景如下:


  • 在 TiDB 集群进行滚动重启、滚动升级、缩容等维护操作时,TiDB server 会发生变动,导致客户端与发生变化的 TiDB server 的连接中断。通过使用 TiProxy,可以在这些维护操作过程中平滑地将连接迁移至其他 TiDB server,从而让客户端不受影响。

  • 所有客户端对 TiDB server 的连接都无法动态迁移至其他 TiDB server。当多个 TiDB server 的负载不均衡时,可能出现整体集群资源充足,但某些 TiDB server 资源耗尽导致延迟大幅度增加的情况。为解决此问题,TiProxy 提供连接动态迁移功能,在客户端无感的前提下,将连接从一个 TiDB server 迁移至其他 TiDB server,从而实现 TiDB 集群的负载均衡。


TiProxy 已集成至 TiUP、TiDB Operator、TiDB Dashboard 等 TiDB 基本组件中,可以方便地进行配置、部署和运维。

安装部署

升级 TIDB 版本到 8.0



可以看到 tiproxy 组件已经集成到 TiDB Dashboard 中。



扩容 Tiproxy


Tiproxy 组件现在可以通过 tiup scale- out 直接扩容,安装非常方便。


这里编写个简单的配置文件,其他配置可参考 https://docs.pingcap.com/zh/tidb/dev/tiproxy-configuration


vi tiproxy.yaml


tiproxy_servers:


 - host: 10.20.10.137   


通过 tiup 工具扩容


tiup cluster scale-out tsp-prod-taos-cluster tiproxy.yaml -u root -p





安装就是如此的简单。


navcait 连接 tiproxy 默认端口 6000 到 tidb 数据库




· TiProxy 连接的 PD 地址。TiProxy 通过从 PD 获取 TiDB 列表来发现 TiDB 实例,不需要额外的配置各个 tidb 服务。如果使用 TiUP 或 TiDB Operator 部署 TiProxy,则会自动设置此项。


性能测试

官网提供了一份测试报告。https://docs.pingcap.com/zh/tidb/dev/tiproxy-performance-test


报告测试了 TiProxy 在 OLTP 场景下的 Sysbench 性能表现,并和 HAProxy 的性能做了对比。


结果显示:


  • TiProxy 的 QPS 上限受工作负载类型的影响。在 Sysbench 的基本工作负载、同等 CPU 使用率的情况下,TiProxy 的 QPS 比 HAProxy 低约 25%

  • TiProxy 能承载的 TiDB server 实例数量根据工作负载类型而变化。在 Sysbench 的基本工作负载下,一台 TiProxy 能承载 5 至 12 台同机型的 TiDB server 实例

  • 查询结果集的行数对 TiProxy 的 QPS 有显著影响,且影响程度与 HAProxy 相同

  • TiProxy 的性能随 vCPU 的数量接近线性增长,因此增加 vCPU 的数量可以有效提高 QPS 上限

  • 长连接的数量、短连接的创建频率对 TiProxy 的 QPS 影响很小


本文这里做个简单的 TPCC 测试。


通过 TiUP 命令下载测试程序:


tiup install bench

导入数据

在 shell 中运行 TiUP 命令:


tiup bench tpcc -H 10.20.10.137 -P 6000 -Uroot -p’$9LBzi4_&JF6u301=e’ -D tpcc –warehouses 1000 –threads 20 prepare

运行测试

 

通过云厂商 slb 连接 tidb 做 TPCC 测试


 tiup bench tpcc -H10.20.10.71 -P4002 -Uroot -p’$9LBzi4_&JF6u301=e’ -D tpcc –warehouses 1000 –threads 100 –time 10m run


测试结果



tpmC: 49221.1, tpmTotal: 109339.8, efficiency: 382.7%



通过 Tiproxy 连接 tidb 做 TPCC 测试


tiup bench tpcc -H 10.20.10.137 -P 6000 -Uroot -p’$9LBzi4_&JF6u301=e’ -D tpcc –warehouses 1000 –threads 100 –time 10m run


运行过程中控制台上会持续打印测试结果:



tpmC: 43659.1, tpmTotal: 97253.7, efficiency: 339.5%





 测试结果: 


通过 TiProxy 过来的请求平均分散在三个 tidb 节点上。


TiProxy 的 QPS 上限受工作负载类型的影响。在 TPCC 的基本工作负载、同等 CPU 使用率的情况下,TiProxy 的 QPS 比 云厂商的 slb 低约 12%,TiProxy 的 tmpc 能力比云厂商的 slb 也是低了约 12%。

结论

TiProxy 为 TiDB 提供负载均衡、连接保持、服务发现等功能已经趋近完美,安装部署非常方便,基本能够满足线下集群的使用。


发布于: 刚刚阅读数: 4
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB v8.0 组件 TiProxy 测试_8.x 实践_TiDB 社区干货传送门_InfoQ写作社区