Skip to content

Commit

Permalink
limiter: adaptive limiter (based on load average)
Browse files Browse the repository at this point in the history
  • Loading branch information
msaf1980 committed Mar 28, 2023
1 parent d4b0965 commit 3801995
Show file tree
Hide file tree
Showing 22 changed files with 1,867 additions and 86 deletions.
135 changes: 86 additions & 49 deletions config/config.go

Large diffs are not rendered by default.

357 changes: 336 additions & 21 deletions config/config_test.go

Large diffs are not rendered by default.

8 changes: 5 additions & 3 deletions deploy/doc/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,17 @@ query-params = [
### Query limiter for prevent database overloading (limit concurrent/maximum incomming requests)

For prevent database overloading incomming requests (render/find/autocomplete) can be limited.
If executing max-concurrent requests, next request will be wait for free slot until index-timeout reached
If wait max-queries requests, for new request error returned immediately.

If executing concurrent-queries requests, next request will be wait for free slot until index-timeout reached
adaptive-queries prevent overload with load average check if graphite-clickhouse run on one host with clickhouse
Real queries will be concurrent-queries + adaptive-queries * (1 / normalized_load_avg - 1).
If normalized_load_avg > 0.9, limit will be concurrent-queries.
```
url = "http://graphite:qwerty@localhost:8123/?readonly=2&log_queries=1&max_rows_to_read=102400000&max_result_bytes=12800000&max_threads=2"
render-max-queries = 500
render-max-concurrent = 10
find-max-queries = 100
find-max-concurrent = 10
find-concurrent-queries = 10
tags-max-queries = 100
tags-max-concurrent = 10
Expand Down
26 changes: 17 additions & 9 deletions doc/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,17 @@ query-params = [
### Query limiter for prevent database overloading (limit concurrent/maximum incomming requests)

For prevent database overloading incomming requests (render/find/autocomplete) can be limited.
If executing max-concurrent requests, next request will be wait for free slot until index-timeout reached
If wait max-queries requests, for new request error returned immediately.

If executing concurrent-queries requests, next request will be wait for free slot until index-timeout reached
adaptive-queries prevent overload with load average check if graphite-clickhouse run on one host with clickhouse
Real queries will be concurrent-queries + adaptive-queries * (1 / normalized_load_avg - 1).
If normalized_load_avg > 0.9, limit will be concurrent-queries.
```
url = "http://graphite:qwerty@localhost:8123/?readonly=2&log_queries=1&max_rows_to_read=102400000&max_result_bytes=12800000&max_threads=2"
render-max-queries = 500
render-max-concurrent = 10
find-max-queries = 100
find-max-concurrent = 10
find-concurrent-queries = 10
tags-max-queries = 100
tags-max-concurrent = 10
Expand Down Expand Up @@ -239,16 +241,22 @@ Only one tag used as filter for index field Tag1, see graphite_tagged table [str
data-timeout = "1m0s"
# Max queries to render queiries
render-max-queries = 0
# Maximum concurrent queries to render queiries
render-max-concurrent = 0
# Concurrent queries to render queiries
render-concurrent-queries = 0
# Render adaptive queries (based on load average) for increase/decrease concurrent queries
render-adaptive-queries = 0
# Max queries for find queries
find-max-queries = 0
# Maximum concurrent queries for find queries
find-max-concurrent = 0
# Find concurrent queries for find queries
find-concurrent-queries = 0
# Find adaptive queries (based on load average) for increase/decrease concurrent queries
find-adaptive-queries = 0
# Max queries for tags queries
tags-max-queries = 0
# Maximum concurrent queries for tags queries
tags-max-concurrent = 0
# Concurrent queries for tags queries
tags-concurrent-queries = 0
# Tags adaptive queries (based on load average) for increase/decrease concurrent queries
tags-adaptive-queries = 0
# Minimum tags in seriesByTag query
tags-min-in-query = 0
# Minimum tags in autocomplete query
Expand Down
Loading

0 comments on commit 3801995

Please sign in to comment.