odc平台归档任务写入失败

【 使用环境 】测试环境
【 OB or 其他组件 】ODC
【 使用版本 】4.4.1-1768284552000
【问题描述】 在odc上测试mysql往ob归档的任务,任务配置参数为默认的:行限流 1000 Rows/s 数据大小限流 10 MB/s
目标ob集群的规格配置为3C12G的unit,集群为1-1-1架构,能确认租户是没有其他人在使用的,只有这个任务即将开始跑,但是就是这么一个空闲租户现在odc归档任务跑不起来,一直报错内存约束,请问是odc不支持这么低配置的租户的任务吗?期待回复,谢谢!

【复现路径】官方文档拉起ODC docker后添加数据源建立归档任务测试
【附件及日志】
ODC归档任务->执行详情->任务日志
[2026-03-23 17:14:19 CST][Job-MIGRATE-1-1-0-MigrateWriter-7][2] [WARN] Write operation not allowed due to memory constraints, sleeping for 50 seconds - Database: wyz_ob_archive_testdb

3 个赞

调整 ODC 归档任务的限流 / 并发参数,默认的 1000 行 /s、10MB/s 对 3C12G 租户仍偏高,需进一步降低写入速率和并发,适配小规格租户。 解决关键是降低 ODC 归档的写入速率 / 并发(行限流 100-200 行 /s、1-2 MB/s),辅以 OB 租户内存参数的临时放宽。

把参数调整至100 rows/s + 限流1MB/s ,再加上调整了参数
ALTER SYSTEM SET writing_throttling_trigger_percentage = 80 TENANT = ‘archive’
还是不行,检查也太严格了 :face_exhaling:

看看你odc的资源使用情况。
docker stats odc

尝试调整下任务内存限制

# 修改单任务限制:1024M--》512M。
 update config_system_configuration set value = '512' where `key` = 'odc.task-framework.job-process-min-memory-size-in-mb' limit 1;  
1 个赞

ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS CPU TIME AVG CPU %
xxx obodc 9.31% 2.349GB / 8.59GB 27.34% 0B / 0B 0B / 12.26MB 229 5m51.52896s 9.31%

起docker也是用的官方文档中的-d -i --net host --cpu-period 100000 --cpu-quota 400000 --memory 8G --name "obodc"默认参数

你先按我说的调整下内存限制那个参数。odc元数据库
然后看看你当前跑了多少个任务。

select status,count(1) from job_job where  executor_destroyed_time is null group by status;

任务只有这一个,刚开始测试,我调下参数看看

调到512了还是不行,执行中任务也能确认只有目前一个测试的
MySQL [odc_metadb]> select status,count(1) from job_job where executor_destroyed_time is null group by status;
±--------±---------+
| status | count(1) |
±--------±---------+
| RUNNING | 1 |
±--------±---------+

开启odc.task-framework.enable-task-supervisor-agent,不检查内存
这个特性创建任务的话 会依赖config_system_configuration 中 odc.task-framework.max-allow-running-jobs 这个配置,默认为8
insert into config_system_configuration(key, application, profile, label, description, value) values(‘odc.task-framework.enable-task-supervisor-agent’, ‘odc’, ‘default’, ‘master’, ‘enable task supervisor agent’, ‘true’);

1 个赞

重新克隆了一个任务,insert了这条参数以后发现ODC站点上的任务状态显示不更新了,一直是“待调度”,并且任务还是没跑起来,还是一样的warning :face_exhaling:

你把完整的日志发来看看。
我之前遇到就是这样解决的。。。要不你容器多给点资源,重启下容器试试


所以老哥还是觉得是ODC容器配置给太低了而不是OB这里的配置太低么,你现在生产用ODC跑归档吗,有最佳实践的参数配置参考么?我现在主要碰到的问题是现在用的ptarchiver归档太慢了,现在在选型是mydumper&myloader还是用ODC,如果ODC需要不停的限速才能跑起来那可能也不适合我们这里的情况了

感觉还是资源配置问题,资源不够吧