-
Notifications
You must be signed in to change notification settings - Fork 8.8k
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
Excessive memory usage on subqueries #7980
Comments
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Sep 30, 2020
Executing a sub query like count_over_time(something[99999d:1s]) will eventually create many and very large point slices. As todays Go's GC can't move objects bad things will happen. Worse due returning slices with different capacities, the large ones might stay alive. Mitigate this by limiting the numSteps to the maximum Samples the query might return. If more samples need to be added the query will fail.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Sep 30, 2020
Executing a sub query like count_over_time(something[99999d:1s]) will eventually create many and very large point slices. As todays Go's GC can't move objects bad things will happen. Worse due returning slices with different capacities, the large ones might stay alive. Mitigate this by limiting the numSteps to the maximum possible value either by taking maxSamples-currentSamples or by looking at how many samples were returned.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 1, 2020
Add an extremely large subquery to the benchmark. Lower the max samples to give the query a chance to complete. No other query gets close to the new limit.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 1, 2020
Add an extremely large subquery to the benchmark. Lower the max samples by an order of magnitude to give the query a chance to complete. No other query gets close to the new limit.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 1, 2020
Executing a sub query like count_over_time(something[99999d:1s]) will eventually create many and very large point slices. As todays Go's GC can't move objects bad things will happen. Worse due returning slices with different capacities, the large ones might stay alive. Mitigate this by limiting the numSteps to the maximum possible value either by taking maxSamples-currentSamples or by looking at how many samples were returned.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 1, 2020
Add an extremely large subquery to the benchmark. Lower the max samples by an order of magnitude to give the query a chance to complete. No other query gets close to the new limit.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 1, 2020
Executing a sub query like count_over_time(something[99999d:1s]) will eventually create many and very large point slices. As todays Go's GC can't move objects bad things will happen. Worse due returning slices with different capacities, the large ones might stay alive. Mitigate this by limiting the numSteps to the maximum possible value either by taking maxSamples-currentSamples or by looking at how many samples were returned.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 1, 2020
Add an extremely large subquery to the benchmark. Lower the max samples by an order of magnitude to give the query a chance to complete. No other query gets close to the new limit.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 3, 2020
Executing a sub query like count_over_time(something[99999d:1s]) will eventually create many and very large point slices. As todays Go's GC can't move objects bad things will happen. Worse due returning slices with different capacities, the large ones might stay alive. Mitigate this by limiting the numSteps to the maximum possible value by taking maxSamples-currentSamples.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 3, 2020
Add an extremely large subquery to the benchmark. Lower the max samples by an order of magnitude to give the query a chance to complete. No other query gets close to the new limit.
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 9, 2020
Executing a sub query like count_over_time(something[99999d:1s]) will eventually create many and very large point slices. As todays Go's GC can't move objects bad things will happen. Worse due returning slices with different capacities, the large ones might stay alive. Mitigate this by limiting the numSteps to the maximum possible value by taking maxSamples-currentSamples. Signed-off-by: Holger Hans Peter Freyther <holger@moiji-mobile.com>
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 9, 2020
Add an extremely large subquery to the benchmark. Lower the max samples by an order of magnitude to give the query a chance to complete. No other query gets close to the new limit. Signed-off-by: Holger Hans Peter Freyther <holger@moiji-mobile.com>
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 14, 2020
Executing a sub query like count_over_time(something[99999d:1s]) will eventually create many and very large point slices. As todays Go's GC can't move objects bad things will happen. Worse due returning slices with different capacities, the large ones might stay alive. Mitigate this by limiting the numSteps to the maximum possible value by taking maxSamples-currentSamples. Signed-off-by: Holger Hans Peter Freyther <holger@moiji-mobile.com>
zecke
added a commit
to zecke/prometheus
that referenced
this issue
Oct 14, 2020
Add an extremely large subquery to the benchmark. Lower the max samples by an order of magnitude to give the query a chance to complete. No other query gets close to the new limit. Signed-off-by: Holger Hans Peter Freyther <holger@moiji-mobile.com>
Hello from the bug scrub. Almost 4y have passed since this was filed, and all the related PRs got abandoned. However, we believe that the insight in this issue is still valuable and would like to keep it open as a reminder to work on those points. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In the PR #6372 and #7930 we have seen problems resulting from massive memory (over) allocations and the handling of large objects in Go.
There are multiple issues at play and multiple changes are required to address them. Let's start with the original problem description:
What's out there and needed.
The text was updated successfully, but these errors were encountered: