暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PolarDB分布式版(PolarDB-X) 私有协议2.0(3)

前文:

PolarDB分布式版(PolarDB-X) 私有协议2.0(1)

PolarDB分布式版(PolarDB-X) 私有协议2.0(2)


性能测试

DN 上定性评估

针对我们需要优化的线程调度问题,我们通过火焰图进行评估确认。


从上图的XRPC的点查压测火焰图中可以看到,请求执行占用CPU提升到71.79%,CPU资源有较好的应用。 对比文章最开头的旧私有协议的火焰图,可见CPU的利用有了非常可观的提升。


下图展示了 MySQL sql 协议在 MySQL connecter 在 JDBC 下点查压测的火焰图,有效执行 CPU 利用率为64.94%,也低于 XRPC 下的利用率。


DN 上定量评估

echo server

评估一个网络框架收发包能力的最直接的方式就是写个echo server进行压测,这里我们将 XRPC 的网络执行框架和阿里内部常用的 libeasy 进行对比,libeasy 的使用代码在 libeasy_bench 目录下,结果如下,测试环境为 64 core 物理机,XRPC 略高于 libeasy 64线程同步模式的性能。

并发XRPClibeasy async 16 listen 64 workerlibeasy async 64 listen 64 workerlibeasy sync 64 threads
255414.45737486.2537564.24252956.703
4107255.2773971.274943.016106999.3
8203521.3145596.88146340.73208922.2
16392131.56274835.03276866.94390191.97
32703287.0480919.72481255.5715153.44
641175622.9799120.2757774.441221337.8
1281837832.91047939.561157251.11844174.2
2562649329.21345222.01550693.42556187.2
5123291273.01397924.21342323.63182367.2
10243612264.81360113.91440107.83415289.2

select 1

对比新老私有协议及 JDBC 在 select 1 下的性能。新架构性能更高,且在高并发下也能稳定运行。

  • 64 core 物理机
并发JDBC老架构新架构
229719.08426994.29929986.0
463485.359082.0966999.305
8126720.66115059.984126951.61
16242323.53217389.78232871.14
32448065.38366213.53423825.47
64753734.6588699.25733777.9
1281038840.2821294.51150645.6
2561182257.2966579.41473572.4
5121177471.2843260.11555356.1
10241147890.2825537.441514292.5
2048--1455882.8
4096--1200290.2
  • 104 core 物理机
并发JDBC老架构新架构
236907.6233711.6336453.35
480340.9667205.2879440.055
8159827.02137136.58156556.69
16299065.2264378.7298600.28
32582958.06506158.16538147.75
64987595.2854529.56917313.56
1281383830.91195628.91348939.5
2561622596.81554815.11685460.8
5121799647.11470166.81941278.5
10241815061.2916179.22084961.6
20481673776.8-2008663.9
4096--1820561.0

点查

  • sysbench表
  • --tables='1' --table-size='100000'
  • oltp_point_select
  • JDBC 走 SQL 查询
  • XRPC 测试了走 SQL 查询和走 XPLAN 查询
并发64c JDBC64c xrpc+xplan64c xrpc+sql104c JDBC104c xrpc+xplan104c xrpc+sql
216578.02723809.6217772.22325471.3632103.79125454.455
436202.3847754.4537122.57454391.5662056.79754073.594
871760.6597431.51673274.34106510.695127509.5106510.695
16137715.45176151.16137329.8195314.94245143.45196580.03
32254749.1311442.44239416.25367031.2415063.97356066.56
64413138.38526345.1407636.72640735.9721447.75604598.06
128502932.12720127.94570637.7919598.21052270.2939035.44
256539180.5843516.9628808.21084268.91281496.01163551.5
512534332.7854824.5610362.251100764.51340563.21220010.0
1204510401.28843499.75623204.11040283.51320433.11187091.4
2048-835596.94597368.94-1241896.41102568.6
4096-771388.9527704.0-1131214.1987188.8

PolarDB-X 开箱性能

  • XRPC 在公共云 5.4.17 默认打开(老版本升级上来的,可以在存储节点参数中,将 new_rpc = 'ON' 打开)
  • XRPC 在开源版中,rpc_version=2 时默认打开
  • XRPC 对 OLTP 类请求性能有较大提升,对 OLAP 类请求性能持平

下列图片为,阿里云官网购买 4*8c64g 的实例,按官网测试文档配置后,新老私有协议的性能对比。

sysbench DRDS 模式性能对比


sysbench 单表打散模式性能对比


TPCC DRDS 模式性能对比


TPCC auto 模式性能对比


各种不同实例规格下的性能可以参考下列性能测试文档中,版本5.4.17的性能数据:

总结

PolarDB-X 的私有协议2.0,内部也称之为 XRPC,完全重构了存储节点上的私有协议网络、调度、执行框架,实现了连接、会话、线程的解绑,并完全摆脱了 MySQL X plugin 的依赖,成为完全独立的 plugin。同时实现了在 MySQL 5.7 8.0 下同一套代码,支持 ARM 等国产化平台,极大提升了代码的可维护性和自主可控性。同时针对原始设计中的局限进行了优化改进,对 OLTP 类请求有着普适的性能提升,也为未来添加新功能提供了更多的可能。


本文来源:PolarDB-X知乎号,关注阅读更多干货好文







「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论