最佳实践—如何选择应用端链接池

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 背景 当应用程序连接PolarDB-X实例执行操作时,从PolarDB-X实例的角度看,会有如下两种类型的连接: 前端连接:由应用程序建立的,到PolarDB-X计算节点(CN)中逻辑库的连接。 后端连接:由PolarDB-X计算节点建立的,到后端数据节点(DN)中物理库的连接。

背景

当应用程序连接PolarDB-X实例执行操作时,从PolarDB-X实例的角度看,会有如下两种类型的连接:

  • 前端连接:由应用程序建立的,到PolarDB-X计算节点(CN)中逻辑库的连接。
  • 后端连接:由PolarDB-X计算节点建立的,到后端数据节点(DN)中物理库的连接。4..png其中后端连接由CN管理,通过私有协议实现TCP连接与后端连接解绑,对用户透明。前端连接由用户创建和管理,本文主要讨论前端连接管理的最佳实践。


说明 为了简化描述,下文中的 “连接” 均代指 “前端连接”。

QPS/RT与连接数的关系

每秒查询请求数 (Query Per Second,QPS) 和响应时间 (Response Time,RT) 是衡量应用对数据库性能需求的基本指标,QPS代表应用并发访问数据库的需求,RT代表单条语句的处理性能。RT的高低与执行的SQL是否复杂和扫描的数据量紧密相关,OLTP系统中查询RT较低,通常以毫秒为单位。

PolarDB-X兼容MySQL协议,请求在单个连接上串行执行,不同连接上的请求可以并行执行,由此得到以下公式:

  • 单个连接的QPS上限 = 1000/RT
  • 应用访问单个CN的QPS上限 = 单个连接的QPS上限×连接数

按照平均RT为5ms计算,单个连接的QPS上限为200,假设应用预估需要的QPS为5000,则至少需要建立250个连接。

连接数限制

PolarDB-X中前端连接仅与网络连接绑定,连接的数量理论上仅受限于CN可用的内存大小和网络连接数。但在实际的场景中,应用创建连接是为了执行查询,连接数需要与执行线程的数量相匹配才能达到最佳性能。5..png

其中后端连接由CN管理,通过私有协议实现TCP连接与后端连接解绑,对用户透明。前端连接由用户创建和管理,本文主要讨论前端连接管理的最佳实践。


说明 为了简化描述,下文中的 “连接” 均代指 “前端连接”。

QPS/RT与连接数的关系

每秒查询请求数 (Query Per Second,QPS) 和响应时间 (Response Time,RT) 是衡量应用对数据库性能需求的基本指标,QPS代表应用并发访问数据库的需求,RT代表单条语句的处理性能。RT的高低与执行的SQL是否复杂和扫描的数据量紧密相关,OLTP系统中查询RT较低,通常以毫秒为单位。

PolarDB-X兼容MySQL协议,请求在单个连接上串行执行,不同连接上的请求可以并行执行,由此得到以下公式:

  • 单个连接的QPS上限 = 1000/RT
  • 应用访问单个CN的QPS上限 = 单个连接的QPS上限×连接数

按照平均RT为5ms计算,单个连接的QPS上限为200,假设应用预估需要的QPS为5000,则至少需要建立250个连接。

连接数限制

PolarDB-X中前端连接仅与网络连接绑定,连接的数量理论上仅受限于CN可用的内存大小和网络连接数。但在实际的场景中,应用创建连接是为了执行查询,连接数需要与执行线程的数量相匹配才能达到最佳性能。6..png

  • 连接池模式(TCP 长连接)效率更高,但部分场景下对分布式负载均衡不友好,可能导致CN负载不均匀
    1. 突发创建连接,导致分布不均如果应用存在突发创建大量连接的情况,负载均衡设备无法及时刷新统计信息,可能出现部分CN上连接较多,结合连接池化,最终导致部分CN压力高于其他CN,影响系统总体性能。
    2. 负载均衡探活异常,导致分布不均负载均衡通过主动探活来判断CN节点是否正常,当探活出现偶发异常时,可能导致部分CN上连接较少,结合连接池化,最终导致部分CN压力低于其他CN,影响系统总提性能。
  • Druid连接池增加了phyTimeoutMillis/phyMaxUseCount参数,定期(例如执行10000次或者10分钟)刷新连接池中的连接,可以在解决上述问题的同时保持性能基本不变,建议默认添加这两个配置。
  • 应用线程数与连接池应用程序访问数据库的一种常见模式,是在应用程序中创建多个线程,每个线程获取一个到数据库的连接并执行查询。为了减少创建/释放线程的开销,通常会使用“线程池”来管理线程,线程池的一个重要参数是“最大线程数”,需要根据实际情况调整。
    理想情况下,查询的RT波动不大,可以应用上文介绍的公式,根据RT计算出合理的连接池大小,并根按照“每个线程一个数据库连接”的思路确定最大线程数。实际场景中,查询RT受到热点、锁、数据倾斜等多种因素的影响,可能出现突发RT增长,甚至部分连接失去响应。如果完全按照理想情况连接池/线程池,可能由于部分慢查询耗尽连接池/线程池,导致应用失去响应,影响关联系统。因此,建议按照“理想情况”的1.5到2倍来设置最大连接数/线程数。
相关实践学习
跟我学:如何一键安装部署 PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署 PolarDB-X。
相关文章
|
12天前
|
存储 弹性计算 固态存储
阿里云服务器配置怎么选择合适?收藏级教程大家参考下
阿里云服务器配置选择涉及CPU、内存、带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型实例,如2核2G3M配置,适合低流量网站。企业用户应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。具体配置需根据实际应用需求来定。
|
5月前
|
弹性计算 监控 关系型数据库
阿里云ECS e实例最佳实践测评:搭建云上博客
阿里云ECS e实例最佳实践测评:搭建云上博客
56097 2
|
安全 搜索推荐 SEO
如何选择网站托管服务公司?网站托管服务有哪些注意事项
当今互联网环境下,企业把网站外包给专业的网站托管公司已成为企业在网络市场寻求长远发展的关键条件,通过网站托管服务,企业网站既能获得更加专业的技术和服务支持,又能大大降低企业运营成本,同时网站运营效果也能得到更好的保证。
148 0
如何选择网站托管服务公司?网站托管服务有哪些注意事项
|
存储 弹性计算 固态存储
阿里云服务器配置怎么选合适?2023避坑指南
阿里云服务器配置怎么选择合适?CPU内存配置、公网带宽大小、系统盘以及云服务器ECS实例规格选择指南,个人用户选择ECS共享型s6云服务器,1核2G、2核4G配置即可,企业公司用户可以选择独享型ECS计算型c6、通用型g7等,4核8G、8核16G、4核32G等配置
284 0
阿里云服务器配置怎么选合适?2023避坑指南
|
存储 弹性计算 固态存储
企业使用阿里云服务器配置怎么选合适?
阿里云服务器公司采购,配置怎么选择?云服务器ECS实例规格怎么选?系统盘选择以及公网带宽选择说明,阿里云百科分享阿里云服务器公司使用配置怎么选择?
168 0
企业使用阿里云服务器配置怎么选合适?
|
SQL 负载均衡 前端开发
最佳实践—如何选择应用端链接池
背景 当应用程序连接PolarDB-X实例执行操作时,从PolarDB-X实例的角度看,会有如下两种类型的连接: 前端连接:由应用程序建立的,到PolarDB-X计算节点(CN)中逻辑库的连接。 后端连接:由PolarDB-X计算节点建立的,到后端数据节点(DN)中物理库的连接。
最佳实践—如何选择应用端链接池
|
存储 缓存 编解码
CDN的使用场景和常见问题|学习笔记
快速学习CDN的使用场景和常见问题
496 0
CDN的使用场景和常见问题|学习笔记
|
运维 前端开发 Devops
云开发Webify 不用服务器也能部署博客
云开发Webify 不用服务器也能部署博客
347 0
|
监控 Cloud Native 安全
如何选择正确的云迁移方法
云迁移的关键在于,不仅要考虑云计算的短期效益,从速度、可扩展性和节约成本的角度出发,还要从根本上为更大的战略奠定基础:从长远来看,企业需要更快地响应市场变化,加快增长,并推动创新。
137 0
如何选择正确的云迁移方法
|
弹性计算 资源调度 大数据
最佳实践丨三种典型场景下的云上虚拟IDC(私有池)选购指南
业务上云常态化,业务在云上资源的选购、弹性交付、自助化成为大趋势。不同行业的不同客户,业务发展阶段不一样,云上资源的成本投入在业务整体成本占比也不一样,最小化成本投入、最大化业务收益始终是不同客户间的共同目标。阿里云面向全行业的用户提供了丰富的云上算力产品服务和灵活多样的售卖模式,帮助用户云上精确的资源容量预估和精细的资源交付管理,非常有利于客户节约云上购买资源的成本。本文是云上私有池系列的第二篇,将集中介绍不同场景下私有池的选购指南。
最佳实践丨三种典型场景下的云上虚拟IDC(私有池)选购指南