Set celery task limits and fix worker timeout#1486
Merged
Conversation
Collaborator
|
@aarontp removing '--pool=solo' from worker.py:253 should enable time limits and avoid the blocking issues we were experiencing. |
Member
Author
Indeed, that worked, thanks! |
jleaniz
requested changes
Jun 5, 2024
jleaniz
left a comment
Collaborator
There was a problem hiding this comment.
LGTM, leaving this for you to make any changes based on our chat. Thanks for the PR!
Member
Author
|
PTAL, I added the soft limit exception to the |
aleu04
pushed a commit
to aleu04/turbinia
that referenced
this pull request
Jun 7, 2024
* Set celery task limits and fix worker timeout * Remove solo pool and change concurrency=1 * Add soft/hard limit buffers * Fix server timeout * Late import for psutil * small fixes, tests * fix run tests * test format string * Fix process_result test * fix execute test * revert unnecessary config changes * Handle soft timeout exception in execute() * update timeout message * Yaaaaaaaapf
jleaniz
pushed a commit
that referenced
this pull request
Jun 13, 2024
* Added the TurbiniaRequest hashed object in Redis * Converted TurbiniaTasks to hash objects in Redis * Made get_request_data more efficient * Made get_requests_summary more efficient * Fixed some issues in request_status * Remove GCP dependencies (#1440) * Remove gcp dependencies * Update dockerfiles * Update dockerfiles * Update gcp error reporting * Updates to formatting * Add unit test * Update unit test * Clean up * Update unit test * Update error reporting * Update file * Update config template * Catch exception * Updates * fix lint * Lint fixes * Updates * Updates * Various updates and fixes * Updates * --- (#1483) updated-dependencies: - dependency-name: requests dependency-type: indirect dependency-group: pip - dependency-name: requests dependency-type: indirect dependency-group: pip ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Updates * Update typo * Updates to unit tests * Updates to unit tests and linter fixes * Update table width UI * Bump the pip group across 2 directories with 1 update (#1487) Bumps the pip group with 1 update in the / directory: [requests](https://github.com/psf/requests). Bumps the pip group with 1 update in the /turbinia/api/cli directory: [requests](https://github.com/psf/requests). Updates `requests` from 2.32.0 to 2.32.3 - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.32.0...v2.32.3) Updates `requests` from 2.32.0 to 2.32.3 - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.32.0...v2.32.3) --- updated-dependencies: - dependency-name: requests dependency-type: indirect dependency-group: pip - dependency-name: requests dependency-type: indirect dependency-group: pip ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix small UI bug * Minor typos/errors * Set celery task limits and fix worker timeout (#1486) * Set celery task limits and fix worker timeout * Remove solo pool and change concurrency=1 * Add soft/hard limit buffers * Fix server timeout * Late import for psutil * small fixes, tests * fix run tests * test format string * Fix process_result test * fix execute test * revert unnecessary config changes * Handle soft timeout exception in execute() * update timeout message * Yaaaaaaaapf * Review fixes * Updates and yapf fix * Minor updates * Update docstrings * Updates to evidence_size * Updates * Change log level for message * Lint * bug fixes * Address review comments * Fix docstrings * Minor UI update --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Igor Rodrigues <igormr@nyu.edu> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aaron Peterson <aaronp@gmail.com>
3 tasks
jleaniz
pushed a commit
that referenced
this pull request
Jun 13, 2024
* Added the TurbiniaRequest hashed object in Redis * Converted TurbiniaTasks to hash objects in Redis * Made get_request_data more efficient * Made get_requests_summary more efficient * Fixed some issues in request_status * Remove GCP dependencies (#1440) * Remove gcp dependencies * Update dockerfiles * Update dockerfiles * Update gcp error reporting * Updates to formatting * Add unit test * Update unit test * Clean up * Update unit test * Update error reporting * Update file * Update config template * Catch exception * Updates * fix lint * Lint fixes * Updates * Updates * Various updates and fixes * Updates * --- (#1483) updated-dependencies: - dependency-name: requests dependency-type: indirect dependency-group: pip - dependency-name: requests dependency-type: indirect dependency-group: pip ... * Updates * Update typo * Updates to unit tests * Updates to unit tests and linter fixes * Update table width UI * Bump the pip group across 2 directories with 1 update (#1487) Bumps the pip group with 1 update in the / directory: [requests](https://github.com/psf/requests). Bumps the pip group with 1 update in the /turbinia/api/cli directory: [requests](https://github.com/psf/requests). Updates `requests` from 2.32.0 to 2.32.3 - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.32.0...v2.32.3) Updates `requests` from 2.32.0 to 2.32.3 - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.32.0...v2.32.3) --- updated-dependencies: - dependency-name: requests dependency-type: indirect dependency-group: pip - dependency-name: requests dependency-type: indirect dependency-group: pip ... * Fix small UI bug * Minor typos/errors * Set celery task limits and fix worker timeout (#1486) * Set celery task limits and fix worker timeout * Remove solo pool and change concurrency=1 * Add soft/hard limit buffers * Fix server timeout * Late import for psutil * small fixes, tests * fix run tests * test format string * Fix process_result test * fix execute test * revert unnecessary config changes * Handle soft timeout exception in execute() * update timeout message * Yaaaaaaaapf * Review fixes * Updates and yapf fix * Minor updates * Update docstrings * Updates to evidence_size * Updates * Change log level for message * Lint * bug fixes * Address review comments * Fix docstrings * Minor UI update --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Igor Rodrigues <igormr@nyu.edu> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aaron Peterson <aaronp@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of the change
SINGLE_RUNfeature and config option.'--pool=soloto--concurrency=1as a solo pool executes tasks directly instead of forking and cannot process celery timeouts.After this change there will be four different timeouts that can occur:
TurbiniaTask.execute()and uses the timeout values set in the Job config in the turbinia config file.celery.exceptions.SoftTimeLimitExceededexception to the worker and should be caught in theTurbiniaTask.execute()orTurbiniaTask.run_wrapper()methods depending on the state of the Task. This is set slightly longer than the Turbinia workout timeout to allow the worker to clean-up and give results when possible. The buffer is defined bytask_manager.CELERY_SOFT_TIMEOUT_BUFFER.task_manager.CELERY_HARD_TIMEOUT_BUFFER), celery is configured to kill the worker running the task. This is not catchable so we will not get any results back from the worker so the server will also need to time out the task.task_manager.SERVER_TASK_TIMEOUT_BUFFERseconds after the Task timeout. This buffer is large because the timer starts from when the task is enqueued and can't account for any scheduling and other wait time. This is to avoid timing out valid tasks due to worker congestion.Applicable issues
Additional information
Checklist