4
5
2
0
专栏/.../

TiDB v8.0 组件 TiProxy 测试

 像风一样的男子  发表于  2024-03-30

近日 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

image.png

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

image.png

扩容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

image.png

image.pngimage.png

安装就是如此的简单。

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

image.png

image.png

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

image.png

性能测试

官网提供了一份测试报告。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

测试结果

 image.png

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

 image.png

通过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

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

image.png

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

 image.png

 image.png

 image.png

 测试结果: 

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

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

结论

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

 

4
5
2
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论