Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] 任务丢失问题 #20514

Closed
nomagicln opened this issue Jun 8, 2024 · 3 comments
Closed

[BUG] 任务丢失问题 #20514

nomagicln opened this issue Jun 8, 2024 · 3 comments
Labels

Comments

@nomagicln
Copy link

问题描述/What happened:
image
image
image

调度执行任务时,如果任务没有正确入队的话会返回错误,但是很多调用的地方都没有处理ScheduleRun返回的错误,因此会出现数据库中的任务状态始终无法推进的情况,并且没有一个恢复机制用来处理这些异常状态的任务。

环境/Environment:
所有

如何复现/How to reproduce
将 pkg/cloudcommon/db/taskman/worker.go 中的 taskWorkMan 修改为1个工作者以及队列长度为1或者其他较小的值,然后触发任意会调用ScheduleRun的业务。

@nomagicln nomagicln added the bug Something isn't working label Jun 8, 2024
@swordqiu
Copy link
Member

@nomagicln 一般来说,出现这种情况系统已经基本不可用,所以未考虑task队列满的异常处理。我感觉应该首先解决导致task队列满的问题。一个常见原因是未正确设置http请求的超时,导致大量任务长期阻塞,导致task队列满。

@nomagicln
Copy link
Author

nomagicln commented Jun 16, 2024

@nomagicln 一般来说,出现这种情况系统已经基本不可用,所以未考虑task队列满的异常处理。我感觉应该首先解决导致task队列满的问题。一个常见原因是未正确设置http请求的超时,导致大量任务长期阻塞,导致task队列满。

@swordqiu
HTTP请求超时是一个原因吧,但是还有另外两个原因影响更大,一个是很多任务执行周期长是因为异步任务同步化导致的,比如cloudmux中有很多对实例操作完需要等待状态就绪的操作,另一个是TaskWorkerManager是默认的调度执行器,整个任务调度体系基本上全依靠这一个实例在做事情,但这个执行器默认只有4*1024的缓存大小,纳管的规模稍微大一点这个大小就捉襟见肘了。

@swordqiu
Copy link
Member

@nomagicln 在master分支,增加了 task_worker_count 和 local_task_worker_count 来控制这两个task manager的worker并发数量

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants