【巡检问题分析与最佳实践】PolarDB 流量 & 代理问题

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: PolarDB集群原生支持读写分离方式接入业务,但是在真实业务中,经常出现节点上负载不均情况,严重的话可能导致单节点承担大量的流量被拖跨,最终整个集群雪崩影响业务。本文主要描述PolarDB代理的配置方法以及流量不均时如何定位。

往期分享

RDS MySQL

RDS MySQL 实例空间问题

RDS MySQL 内存使用问题

RDS MySQL 活跃线程数高问题

RDS MySQL 慢SQL问题

RDS MySQL 实例IO高问题

RDS MySQL 小版本升级最佳实践

RDS PostgreSQL

RDS PostgreSQL 实例IO高问题

RDS PostgreSQL 慢SQL问题

RDS PostgreSQL CPU高问题

RDS SQL Server

RDS SQL Server 磁盘IO吞吐高问题

RDS SQL Server CPU高问题

RDS SQL Server 空间使用问题

PolarDB

PolarDB MySQL CPU高问题

Redis

Redis 流控问题

Redis 内存高问题

Redis CPU高问题

MongoDB

MongoDB 内存高问题

MongoDB 磁盘IO高问题

MongoDB 空间使用问题

概述

PolarDB集群原生支持读写分离方式接入业务,但是在真实业务中,经常出现节点上负载不均情况,严重的话可能导致单节点承担大量的流量被拖跨,最终整个集群雪崩影响业务。

本文主要描述PolarDB代理的配置方法以及流量不均时如何定位。

数据库代理

基本信息

在RDS MySQL产品中,数据库代理需要单独购买并配置,而在PolarDB M集群中,默认即开启数据库代理功能,同时功能也比 MySQL的数据库代理更为强大。

  • 主地址:读写,直接指向主节点,只能配置连接名,无法配置代理功能
  • 集群地址:读写方式可配置,支持标准代理配置,不可删除
  • 自定义地址:读写方式可配置,支持标准代理配置,可删除

地址配置(ENDPOINT)

只读类型

在选定读写模式是【只读】类型的情况下,配置项比较少,需要注意的是只读类型的endpoint如果只使用单节点,尽量不要应用在生产环境中。

另外可调整的参数是【并行查询】,此配置只在只读endpoint中可配置,在PolarDB 8.0 中支持了并行查询,如果只读endpoint承接一些AP类业务流量,可以单独提供只读节点给此endpoint,并且尽量和TP业务节点不要重合,同时对并行查询的并行度单独调整,以充分利用CPU资源执行并行查询。


读写类型

读写类型中需要注意的点主要是

  • 一致性级别
  • 最终一致性:不考虑数据的同步情况,按负载进行节点请求的调度,会出现写入的数据未同步完成,只读节点上读取不到的情况,抽象如图:

  • 会话一致性:简单理解就是指在同一个连接里的前后请求,一般在写入后立即请求数据时使用,也是PolarDB推荐的一致性配置,抽象如图:

  • 全局一致性:每一个会话都要判断只读节点是否已经同步到最新数据,对一致性要求最高的场景下启用,抽像如图:

  • 以上三种一致性级别,需要根据业务需求配置。
  • 主库不接受读:满足一致性需求的前提下,将读请求全部分流到只读节点执行,如果不满足一致性需求(只读同步完成),流量还是会路由到主实例。
  • 事务拆分:将事务头部的读取语句拆分到只读节点上以承担主节点压力,如图:

  • 连接池

  • 会话级连接池:用以缓存连接信息,主要是连接风暴的场景下使用,例如PHP大量短连接的场景下,无法控制连接到实例的总连接数
  • 事务级连接池:标准连接池方案,对长连接进行复用,类似Druid等连接池中间件,控制连接实例的总连接数


注意

  • endpoint配置读写模式时,系统表查询会被路由到主节点,即使节点没有配置在当前endpoint,可能对一些业务场景有影响,例如:
select*from information_schema.processlist;
  • 读写模式下,即使没有配置主节点,写请求会自动路由到主节点
  • 如果对一致性有要求,推荐使用会话一致性,可以满足大部分业务场景,如果小部分业务的一致性要求不能在同一会话中完成(dml ->select),可以考虑使用hint方式强制读主节点,例如:
/*FORCE_MASTER*/select*from information_schema.processlist;

流量定位

有时观察实例性能,会发现实例的流量不均匀,需要定位原因,防止流量倾斜导致的实例性能问题。


常见问题

  • 主节点负载高, 只读节点负载低的情况
  • 场景一:都是业务侧直接连接了主地址导致只读没有分流,特别是在【RDS一键迁移PolarDB】的最终切换过程中,默认原RDS地址会切换到PolarDB的主地址上,这种情况下会导致流量全部流转到rw节点。此类问题需要业务侧调整连接地址为集群或自定义地址。
  • 场景二:使用的是读写分离地址,但业务上有大量的写,在代理层会把所有的写流量路由到主节点。此类场景可以尝试打开【主库不接受读】和【事务拆分】,尽可能让只读节点承担一些读流量
  • 只读节点负载高,主节点负载低
  • 此类场景一般是预期内的只读节点承截流量,例如配置了主不接受读和事务拆分,同时大量的请求都是读请求时,此类场景是比较理想的PolarDB流量分配,即使只读节点资源不够,也可以通过快速添加新的只读节点以分担负载,监控曲线例如:


以上两种都是预期内的负载分配,但有可能负载情况不在预期,如集群地址中有多个只读节点,但只有某个节点负载非常高,此类情况就需要定位是否有流量异常或者实例性能异常的情况。


异常定位

  • 实例复用
  • 由于PolarDB可以自定义多个endpoint,不同endpoint之前节点也可以复用,就有可能造成流量交叉导致实例负载不平均,例如TP业务和 AP业务不同的地址,但配置了相同的只读节点,如果出现交叉使用的节点负载异常,有很大可能就是不同业务之间的资源争抢,可以尝试将问题节点从某个地址中摘除,再对比负载情况。
  • 另外不建议节点交叉部署。
  • 实例本身性能问题
  • 在某些情况下,实例可能是由于自身问题导致资源负载高,例如在《PolarDB MySQL CPU高问题》 一文提到的AHI问题,不同节点分配的流量会导致AHI的分配也不相同,可能会导致某个节点上出现争抢问题,此时就要定位具体原因以优化节点性能。另外代理层是按负载情况分配的,如果单节点负载高,流量也会自动向负载低的节点倾斜,可能导致集群性能整体出现问题。
  • 来源定位
  • 目前PolarDB还未完全接入DAS历史数据诊断,如果需要定位异常流量来源,只能观察当前连接请求的情况,在一键诊断->会话管理 入口,可以查看用Hosts维度会话的统计,以确认是否有非预期的业务来源访问。同时可将正常节点与异常节点做对比以定位异常流量来源




相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
7月前
|
SQL 数据可视化 关系型数据库
MCP与PolarDB集成技术分析:降低SQL门槛与简化数据可视化流程的机制解析
阿里云PolarDB与MCP协议融合,打造“自然语言即分析”的新范式。通过云原生数据库与标准化AI接口协同,实现零代码、分钟级从数据到可视化洞察,打破技术壁垒,提升分析效率99%,推动企业数据能力普惠化。
561 3
|
10月前
|
存储 关系型数据库 MySQL
亿级数据秒级响应:PolarDB MySQL HTAP实时分析方案设计与压测报告
PolarDB MySQL HTAP方案实现亿级数据秒级响应,支持高并发事务与实时分析。通过行列混存、智能路由与资源隔离,满足电商、金融等场景的实时报表、决策需求,降低架构复杂度与运维成本。
480 6
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
NoSQL 关系型数据库 MySQL
阿里云PolarDB游戏场景最佳实践
阿里云PolarDB游戏场景最佳实践涵盖了数据库体系演进、行业优化、Redis解决方案、性能优化、备份还原及全球部署等内容。PolarDB通过共享存储、物理复制等技术提升读扩展和大容量支持,针对游戏行业的高IO需求进行优化,提供秒级备份与快速恢复能力。同时,PolarDB for Redis实现了一写多读架构,支持百TB级别的高性能存储,具备成本优势。该方案已在米哈游等大型游戏中广泛应用,确保了高并发下的稳定性和数据一致性,满足游戏行业的特殊需求。
679 36
|
人工智能 关系型数据库 分布式数据库
PolarDB-PG AI最佳实践3 :PolarDB AI多模态相似性搜索最佳实践
本文介绍了如何利用PolarDB结合多模态大模型(如CLIP)实现数据库内的多模态数据分析和查询。通过POLAR_AI插件,可以直接在数据库中调用AI模型服务,无需移动数据或额外的工具,简化了多模态数据的处理流程。具体应用场景包括图像识别与分类、图像到文本检索和基于文本的图像检索。文章详细说明了技术实现、配置建议、实战步骤及多模态检索示例,展示了如何在PolarDB中创建模型、生成embedding并进行相似性检索
|
SQL 人工智能 关系型数据库
PolarDB-PG AI最佳实践 2 :PolarDB AI X EAS实现自定义库内模型推理最佳实践
PolarDB通过POLAR_AI插件支持使用SQL调用AI/ML模型,无需专业AI知识或额外部署环境。结合阿里云EAS在线模型服务,可轻松部署自定义模型,在SQL中实现如文本翻译等功能。
|
关系型数据库 分布式数据库 数据库
瑶池数据库大讲堂|PolarDB HTAP:为在线业务插上实时分析的翅膀
瑶池数据库大讲堂介绍PolarDB HTAP,为在线业务提供实时分析能力。内容涵盖MySQL在线业务的分析需求与现有解决方案、PolarDB HTAP架构优化、针对分析型负载的优化(如向量化执行、多核并行处理)及近期性能改进和用户体验提升。通过这些优化,PolarDB HTAP实现了高效的数据处理和查询加速,帮助用户更好地应对复杂业务场景。
433 4
|
SQL 人工智能 自然语言处理
PolarDB-PG AI最佳实践 1:基础能力实践
Polar_AI 是 PolarDB 数据库的 AI 扩展,集成了先进的人工智能模型和算法,使数据库能够执行机器学习和自然语言处理任务。它支持 PostgreSQL 及 Oracle 兼容版本,通过标准 SQL 轻松调用 AI 模型,具备简单易用、灵活可定制、无缝数据融合、数据安全和高性能等优势。用户可以通过 SQL 快速实现文本转向量、情感分类等功能,并能自定义扩展 AI 模型。

相关产品

  • 云原生数据库 PolarDB