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

fix(server): serve artifacts directly from disk to support large artifacts #4589

Merged
merged 1 commit into from
Nov 24, 2020

Conversation

dcherman
Copy link
Member

When serving very large artifacts, first loading them into memory can potentially
cause the pod to go OOM/crash depending on how much memory is available and what
limits have been set. Rather than loading it into memory, we can serve files
directly from disk.

Fixes #4588

@dcherman
Copy link
Member Author

dcherman commented Nov 22, 2020

This is marked as draft pending the merge of #4579 since it touches the same code. I'll rebase this PR on top of that once it's been merged and make sure tests pass.

@dcherman dcherman force-pushed the perf/artifact-loading branch 2 times, most recently from cde7ef8 to f3adc2b Compare November 23, 2020 15:24
@alexec
Copy link
Contributor

alexec commented Nov 23, 2020

Please mark as "Ready to review' when ready.

…facts

When serving very large artifacts, first loading them into memory can potentially
cause the pod to go OOM/crash depending on how much memory is available and what
limits have been set.  Rather than loading it into memory, we can serve files
directly from disk.

Fixes argoproj#4588

Signed-off-by: Daniel Herman <[email protected]>
@dcherman dcherman marked this pull request as ready for review November 24, 2020 00:27
@alexec alexec merged commit 9ee4d44 into argoproj:master Nov 24, 2020
@alexec alexec added this to the v3.0 milestone Nov 24, 2020
alexcapras pushed a commit to alexcapras/argo that referenced this pull request Dec 2, 2020
Signed-off-by: [email protected] <[email protected]>

feat(ui): Add Template/Cron workflow filter to workflow page. Closes argoproj#4532 (argoproj#4543)

Signed-off-by: Tianchu Zhao <[email protected]>

feat(executor): Auto create s3 bucket if not present.

Signed-off-by: Alex Capras <[email protected]>

Apply codegen

Signed-off-by: Alex Capras <[email protected]>

Add argo-e2e label to test wf

Signed-off-by: Alex Capras <[email protected]>

chore: Updated stress test YAML (argoproj#4569)

Signed-off-by: Alex Collins <[email protected]>

docs: Updated kubectl apply command in manifests README (argoproj#4577)

Signed-off-by: Stefan Gloutnikov <[email protected]>

feat(controller): Make MAX_OPERATION_TIME configurable. Close argoproj#4239 (argoproj#4562)

Signed-off-by: Alex Collins <[email protected]>

docs: Fix a typo in example (argoproj#4590)

Signed-off-by: Takayoshi Nishida <[email protected]>

feat(controller): Retry transient offload errors. Resolves argoproj#4464 (argoproj#4482)

Signed-off-by: Alex Collins <[email protected]>

fix(server): use the correct name when downloading artifacts (argoproj#4579)

Signed-off-by: Daniel Herman <[email protected]>

fix(server): serve artifacts directly from disk to support large artifacts (argoproj#4589)

Signed-off-by: Daniel Herman <[email protected]>

fix(executor): Handle sidecar killing in a process-namespace-shared pod (argoproj#4575)

Signed-off-by: Daisuke Taniwaki <[email protected]>

docs: Add JSON schema for IDE validation (argoproj#4581)

Signed-off-by: Paul Brabban <[email protected]>

refactor: Use polling model for workflow phase metric (argoproj#4557)

Signed-off-by: Simon Behar <[email protected]>

Addressing reviewers comments

Signed-off-by: Alex Capras <[email protected]>

Addressing reviewers comments

docs: Minor typo fix (argoproj#4610)

Signed-off-by: Paavo Pokkinen <[email protected]>

fix(controller): Prevent tasks with names starting with digit to use either 'depends' or 'dependencies' (argoproj#4598)

Signed-off-by: terrytangyuan <[email protected]>

fix(docs): Bring minio chart instructions up to date (argoproj#4586)

Signed-off-by: Ranga Krishnan <[email protected]>

fix(executor): Fixed waitMainContainerStart returning prematurely. Closes argoproj#4599 (argoproj#4601)

Signed-off-by: fsiegmund <[email protected]>

feat(controller): Enhanced artifact repository ref. See argoproj#3184 (argoproj#4458)

Signed-off-by: Alex Collins <[email protected]>

fix: Null check pagination variable (argoproj#4617)

Signed-off-by: Simon Behar <[email protected]>

fix: Perform fields filtering server side (argoproj#4595)

Signed-off-by: Simon Behar <[email protected]>

fix(server): Correct webhook event payload marshalling. Fixes argoproj#4572 (argoproj#4594)

Signed-off-by: Alex Collins <[email protected]>

feat(ui): Add columns--narrower-height to AttributeRow (argoproj#4371)

fix: Fix TestCleanFieldsExclude (argoproj#4625)

Signed-off-by: Simon Behar <[email protected]>

fix(argo-server): fix global variable validation error with reversed dag.tasks (argoproj#4369)

Signed-off-by: chenyu.zheng <[email protected]>

fix: derive jsonschema and fix up issues, validate examples dir… (argoproj#4611)

Signed-off-by: Paul Brabban <[email protected]>

fix(ui): Reference secrets in EnvVars. Fixes argoproj#3973  (argoproj#4419)

Signed-off-by: Alejandro Tejera <[email protected]>

fix(ui): Fix Snyk issues (argoproj#4631)

Signed-off-by: Alex Collins <[email protected]>

feat(executor): More informative log when executors do not support output param from base image layer (argoproj#4620)

Signed-off-by: terrytangyuan <[email protected]>

Codegen patch. Signed off by [email protected]

Codegen patch. Signed off by [email protected]

Delete test.patch
alexcapras pushed a commit to alexcapras/argo that referenced this pull request Dec 2, 2020
Signed-off-by: [email protected] <[email protected]>

feat(ui): Add Template/Cron workflow filter to workflow page. Closes argoproj#4532 (argoproj#4543)

Signed-off-by: Tianchu Zhao <[email protected]>

feat(executor): Auto create s3 bucket if not present.

Signed-off-by: Alex Capras <[email protected]>

Apply codegen

Signed-off-by: Alex Capras <[email protected]>

Add argo-e2e label to test wf

Signed-off-by: Alex Capras <[email protected]>

chore: Updated stress test YAML (argoproj#4569)

Signed-off-by: Alex Collins <[email protected]>

docs: Updated kubectl apply command in manifests README (argoproj#4577)

Signed-off-by: Stefan Gloutnikov <[email protected]>

feat(controller): Make MAX_OPERATION_TIME configurable. Close argoproj#4239 (argoproj#4562)

Signed-off-by: Alex Collins <[email protected]>

docs: Fix a typo in example (argoproj#4590)

Signed-off-by: Takayoshi Nishida <[email protected]>

feat(controller): Retry transient offload errors. Resolves argoproj#4464 (argoproj#4482)

Signed-off-by: Alex Collins <[email protected]>

fix(server): use the correct name when downloading artifacts (argoproj#4579)

Signed-off-by: Daniel Herman <[email protected]>

fix(server): serve artifacts directly from disk to support large artifacts (argoproj#4589)

Signed-off-by: Daniel Herman <[email protected]>

fix(executor): Handle sidecar killing in a process-namespace-shared pod (argoproj#4575)

Signed-off-by: Daisuke Taniwaki <[email protected]>

docs: Add JSON schema for IDE validation (argoproj#4581)

Signed-off-by: Paul Brabban <[email protected]>

refactor: Use polling model for workflow phase metric (argoproj#4557)

Signed-off-by: Simon Behar <[email protected]>

Addressing reviewers comments

Signed-off-by: Alex Capras <[email protected]>

Addressing reviewers comments

docs: Minor typo fix (argoproj#4610)

Signed-off-by: Paavo Pokkinen <[email protected]>

fix(controller): Prevent tasks with names starting with digit to use either 'depends' or 'dependencies' (argoproj#4598)

Signed-off-by: terrytangyuan <[email protected]>

fix(docs): Bring minio chart instructions up to date (argoproj#4586)

Signed-off-by: Ranga Krishnan <[email protected]>

fix(executor): Fixed waitMainContainerStart returning prematurely. Closes argoproj#4599 (argoproj#4601)

Signed-off-by: fsiegmund <[email protected]>

feat(controller): Enhanced artifact repository ref. See argoproj#3184 (argoproj#4458)

Signed-off-by: Alex Collins <[email protected]>

fix: Null check pagination variable (argoproj#4617)

Signed-off-by: Simon Behar <[email protected]>

fix: Perform fields filtering server side (argoproj#4595)

Signed-off-by: Simon Behar <[email protected]>

fix(server): Correct webhook event payload marshalling. Fixes argoproj#4572 (argoproj#4594)

Signed-off-by: Alex Collins <[email protected]>

feat(ui): Add columns--narrower-height to AttributeRow (argoproj#4371)

fix: Fix TestCleanFieldsExclude (argoproj#4625)

Signed-off-by: Simon Behar <[email protected]>

fix(argo-server): fix global variable validation error with reversed dag.tasks (argoproj#4369)

Signed-off-by: chenyu.zheng <[email protected]>

fix: derive jsonschema and fix up issues, validate examples dir… (argoproj#4611)

Signed-off-by: Paul Brabban <[email protected]>

fix(ui): Reference secrets in EnvVars. Fixes argoproj#3973  (argoproj#4419)

Signed-off-by: Alejandro Tejera <[email protected]>

fix(ui): Fix Snyk issues (argoproj#4631)

Signed-off-by: Alex Collins <[email protected]>

feat(executor): More informative log when executors do not support output param from base image layer (argoproj#4620)

Signed-off-by: terrytangyuan <[email protected]>

Codegen patch. Signed off by [email protected]

Codegen patch. Signed off by [email protected]

Delete test.patch

Signed-off-by: Alex Capras <[email protected]>
alexec pushed a commit that referenced this pull request Dec 3, 2020
@alexec alexec modified the milestones: v3.0, v2.12 Dec 3, 2020
@alexec
Copy link
Contributor

alexec commented Dec 3, 2020

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

Successfully merging this pull request may close these issues.

argo-server goes OOM when serving large artifacts
2 participants