问题现象
连接Doris实例时,连接超时:
原因分析
连接Doris实例的主机或客户端IP地址未加入Doris实例的网络连接白名单。
解决方法
注意事项
通过与Doris实例不在同一VPC下面的主机或客户端连接Doris实例时,连接超时或网络不通。
需要通过公网地址连接Doris实例,并将目标主机的公网地址加入Doris实例的网络连接白名单。
不同业务线使用同一个Doris集群,导致作业相互影响。
未做资源隔离,导致作业之间相互影响。
解决方法
参考Doris官方文档,进行资源划分:
[推荐使用] Resource Group方式:多租户和资源划分
Workload Group方式:Workload Group
问题现象
通过 show backends; 查询BE节点上的Tablet数量,出现不均衡现象:
原因分析
扩容等操作完成后未执行re-balance操作,导致数据不均衡,且Doris自动均衡参数lake_enable_balance_tablets_between_workers默认值为false。
解决方法
ADMIN SET FRONTEND CONFIG (lake_enable_balance_tablets_between_workers=true);
向Doris建立新连接时报下列错误
Reach limit of connection
集群新建连接数过多,达到FE或用户的连接数上限
-- 查看user的连接数上限 show property for '用户名'; -- 修改user级的连接数限制 set property for '用户名' 'max_user_connections' = 'xxx';
BE节点CPU持续打满,Compaction任务数与BE节点的核数相同。
BE节点的规格为4 vCPU,通过Base Compaction进行小文件合并时的并发限制为4,导致CPU资源被打满。
-- base compaction 的线程数,默认是 4 max_base_compaction_threads -- cumulative compaction 的线程数,默认是 10 max_cumu_compaction_threads
单个查询/作业将CPU使用率打满到100%,并持续10秒以上,大量挤占集群资源,导致正常的查询失败或者延时增加。
Doris集群读写性能下降或报错,通过监控发现BE节点上的Compaction Score过高
说明
该说明仅适用于存算一体Doris实例
Tablet version数量超出限制,执行Insert Into等操作时出现错误:
ERROR 5025 (HY000): Failed to load data into tablet XXXX, because of too many versions, current/limit: 6/5. You can reduce the loading job concurrency, or increase loading data batch size. If you are loading data with Routine Load, you can increase FE configs routine_load_task_consume_second and max_routine_load_batch_size... ...
上述报错是因为导入频率太快,数据没能及时合并 (Compaction),从而导致版本数超过支持的最大未合并版本数。默认支持的最大未合并版本数为 1000
写入事务数量超出限制,写入操作时出现错误:
current running txns on db xxxx is xxxx, larger than limit xxxx
-- Doris show proc '/transactions'; -- 查看每个db的情况 show proc '/transactions/${db_id}'; -- 查看已完成的导入事务 找到失败事务 查看原因 show proc '/transactions/${db_id}/finished';
-- Doris引擎 -- 调整FE配置 需要重启才能生效 -- 默认 1000 admin set frontend config ("max_running_txn_num_per_db" = "xxx")
too many filter rows数据写入 Doris 时失败,报错提示 too many filtered rows。举例:
{ "Status": "Fail", "BeginTxnTimeMs": 101, "Message": "too many filtered rows", "NumberUnselectedRows": 0, "CommitAndPublishTimeMs": 0, "Label": "xxxxxxxxx", "LoadBytes": 245396, "StreamLoadPlanTimeMs": 102, "NumberTotalRows": 984, "WriteDataTimeMs": 265, "TxnId": 13787, "LoadTimeMs": 469, "ErrorURL": "http://xx.xx.xx.xx:8040/api/_load_error_log?file=error_log_5a4aad49f7900ad7_9dec92739f8027b7", "ReadDataTimeMs":0, "NumberLoadedRows":0, "NumberFilteredRows":984 }
Doris 为保证数据质量,默认会对写入数据进行合法性校验,当数据不符合 Doris 表的字段类型时,会被过滤掉。当过滤行占总行数的比例超过阈值时,系统会终止写入,避免大量无效数据占用资源或破坏数据一致性。
用户可通过报错信息中的url查看具体的报错原因,常见原因有:
max_filter_ratio 建议设置为 0.05~0.1(5%-10%),既允许少量偶发脏数据,又避免大量无效数据写入。