在生产环境中,需为业务模块划分资源使用,避免大查询或业务 BUG 导致集群资源过载、影响其他业务;EMR Serverless StarRocks 的引擎提供多种资源隔离或查询熔断方式。
产品形态 | 引擎 | 部署方式 | 适用版本 |
|---|---|---|---|
Serverless 实例 | StarRocks | 存算分离 | 3.2.x版本及以上 |
存算一体 | 3.2.x版本及以上 |
对于大查询防御通常有如下两种方法。
需要结合业务实际情况来选择使用。以下为使用样例,详细请参考 StarRocks 资源隔离进行配置调整。
注意
-- 1、查看是否开启SQL黑名单,若未开启执行下一步 admin show frontend config like '%enable_sql_blacklist%'; -- 2、动态开启SQL黑名单 admin set frontend config ('enable_sql_blacklist' = 'true');
-- 1、创建block规则 例如 ADD SQLBLACKLIST "select count(\\*) from .+"; ADD SQLBLACKLIST "<sql_reg_expr>"; -- 2、 查看SQL Blacklist的编号与内容 SHOW SQLBLACKLIST; -- 3、 删除SQL Blacklist DELETE SQLBLACKLIST <sql_index_number>;
说明
本样例中的数值仅用作参考,请结合业务使用姿势与starrocks_audit_db__的指标进行参考,并建议完整测试后再执行,避免影响线上已有查询。
-- 1、创建大查询熔断资源组 CREATE RESOURCE GROUP bigQueryRG TO (user='rg1_user2', query_type in ('select')), (db='db1') WITH ( 'big_query_cpu_second_limit' = '100', -- 查询使用的CPU时(秒) 'big_query_scan_rows_limit' = '100000', -- 查询扫描的数据行数 'big_query_mem_limit' = '1073741824' -- 查询消耗的内存大小 ); -- 2、查看所有资源组 SHOW RESOURCE GROUPS ALL;
若查询达到资源组限制,报错 exceed big query scan_rows limit,则意味此查询被成功熔断。
在存算分离(多仓版)场景中,可以结合上述的 SQL 黑名单与大查询熔断资源组功能实现单个计算仓库内的用户级隔离,也可以使用让业务方绑定不同的计算仓库来天然的实现资源的隔离,详情请参见:StarRocks Multi-Warehouse(多仓)最佳实践。