欢迎访问OceanBase官网获取更多信息:https://www.oceanbase.com/
OceanBase是多租户的数据库集群,租户之间通过线程和协程分配调度 CPU 资源。当集群租户请求量升高,或者复杂的查询处理,CPU 资源不足就会表现为队列请求积压的情况,主要现象为 SQL 响应时间变长,处理响应速度变慢等,本文针对这种情况介绍了应急处理方法。
应急处理方法
当目前集群中租户遇到队列请求积压的情况时,我们可以从以下几个方面入手处理:
尝试扩容租户 CPU 资源,或切主到负载较小的机器。
对租户内 CPU 的扩容可以通过修改
UNIT_CONFIG、UNIT_NUM来实现扩容 CPU;建议通过 OCP 执行操作。命令行的操作方法如下:i. 执行以下 SQL 语句,确认当前租户使用的
unit_config注意
多个副本可能使用了不同的
resource_pool,您需分别做出调整。SELECT a.tenant_name,a.tenant_id,b.name unit_config,c.name pool_name,b.max_cpu,b.min_cpu FROM OCEANBASE.DBA_OB_TENANTS a, OCEANBASE.DBA_OB_UNIT_CONFIGS b, OCEANBASE.DBA_OB_RESOURCE_POOL c WHERE a.tenant_id=c.tenant_id AND b.unit_config_id = c.unit_config_id ORDER BY a.tenant_id desc;ii. 执行生成的 SQL 语句。
注意
截止 OceanBase V3.2 版本,修改
resource unit配置仅 CPU、Memory 配置是实际生效的,其他 IO 参数,例如磁盘、iops 等都暂时无效,默认即可。ALTER RESOURCE UNIT unit_config_name min_cpu=2,max_cpu=2,memory_size ='2G',max_iops=10000,min_iops=10000;对于多 unit 的租户,集群级别的扩容可以向 Zone 内添加 OBServer 节点,然后增加
unit_num来实现。详情请参见 数据库基础管理 章节中的 扩容和缩容 。如果发现执行次数出现异常突刺的 SQL,和业务确认后执行限流。
判断执行次数有突刺的 SQL。
参考 OCP 中的 SQL 诊断功能,查看 SQL 的历史执行趋势,勾选执行次数选项,即可查看指定时间内某条 SQL 的执行次数趋势。
进行 SQL 限流。
通过绑定 SQL 的执行计划加入 hint max_concurrent 来限制 SQL 并发,实现对 SQL 的限流。示例如下:
CREATE OUTLINE outline_name ON sql_id USING HINT /*+max_concurrent(1)*/;更多信息请参见 《SQL 参考(MySQL 模式)》 中的 SQL语句 。
欢迎访问OceanBase官网获取更多信息:https://www.oceanbase.com/




