-
Notifications
You must be signed in to change notification settings - Fork 2
redis-proxy: raise ElasticKV connection budget #1154
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
Changes from 7 commits
1061955
b4a9a63
7e4e5dc
040ed5a
68af55e
f3a47b6
a802b7d
9dc4adf
486037c
1978aad
728c5b8
3fac311
b11f4a1
8f100dd
9a94c9b
ddfffb7
40370e4
cf09c1b
424e35d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -19,9 +19,11 @@ import ( | |
| ) | ||
|
|
||
| const ( | ||
| sentryFlushTimeout = 2 * time.Second | ||
| metricsShutdownTimeout = 5 * time.Second | ||
| secondaryConcurrencyDivisor = 2 | ||
| sentryFlushTimeout = 2 * time.Second | ||
| metricsShutdownTimeout = 5 * time.Second | ||
| secondaryWriteConcurrencyDivisor = 2 | ||
| secondaryScriptConcurrencyDivisor = 32 | ||
| secondaryScriptConcurrencyCap = 3 | ||
| ) | ||
|
|
||
| func main() { | ||
|
|
@@ -53,13 +55,14 @@ func run() error { | |
| flag.IntVar(&primaryPoolSize, "primary-pool-size", primaryPoolSize, "Primary Redis backend connection pool size") | ||
| flag.IntVar(&elasticKVPoolSize, "elastickv-pool-size", elasticKVPoolSize, "ElasticKV backend connection pool size") | ||
| flag.IntVar(&secondaryWriteConcurrency, "secondary-write-concurrency", secondaryWriteConcurrency, "Maximum concurrent asynchronous secondary writes including scripts (0 = half of secondary backend pool size)") | ||
| flag.IntVar(&secondaryScriptConcurrency, "secondary-script-concurrency", secondaryScriptConcurrency, "Maximum concurrent asynchronous secondary Lua-script writes within the write limit (0 = half of secondary write concurrency)") | ||
| flag.IntVar(&secondaryScriptConcurrency, "secondary-script-concurrency", secondaryScriptConcurrency, "Maximum concurrent asynchronous secondary Lua-script writes within the write limit (0 = secondary write concurrency / 32, minimum 1, capped at 3)") | ||
| flag.IntVar(&secondaryBlockingReplayConcurrency, "secondary-blocking-replay-concurrency", secondaryBlockingReplayConcurrency, "Maximum concurrent asynchronous secondary mutating blocking-command replays (0 = capped remaining secondary backend pool capacity after writes)") | ||
| flag.IntVar(&secondaryWriteQueueSize, "secondary-write-queue-size", secondaryWriteQueueSize, "Maximum queued asynchronous secondary writes (0 = derived from write concurrency)") | ||
| flag.IntVar(&secondaryScriptQueueSize, "secondary-script-queue-size", secondaryScriptQueueSize, "Maximum queued asynchronous secondary Lua-script writes (0 = derived from script concurrency)") | ||
| flag.IntVar(&secondaryBlockingReplayQueueSize, "secondary-blocking-replay-queue-size", secondaryBlockingReplayQueueSize, "Maximum queued asynchronous secondary mutating blocking-command replays (0 = derived from blocking replay concurrency)") | ||
| flag.StringVar(&modeStr, "mode", "dual-write", "Proxy mode: redis-only, dual-write, dual-write-shadow, elastickv-primary, elastickv-only") | ||
| flag.DurationVar(&cfg.SecondaryTimeout, "secondary-timeout", cfg.SecondaryTimeout, "Secondary write timeout") | ||
| flag.DurationVar(&cfg.SecondaryScriptTimeout, "secondary-script-timeout", cfg.SecondaryScriptTimeout, "Secondary Lua-script write timeout (0 = secondary-timeout)") | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
In Useful? React with 👍 / 👎. |
||
| flag.DurationVar(&cfg.ShadowTimeout, "shadow-timeout", cfg.ShadowTimeout, "Shadow read timeout") | ||
| flag.StringVar(&cfg.SentryDSN, "sentry-dsn", cfg.SentryDSN, "Sentry DSN (empty = disabled)") | ||
| flag.StringVar(&cfg.SentryEnv, "sentry-env", cfg.SentryEnv, "Sentry environment") | ||
|
|
@@ -283,11 +286,15 @@ func secondaryBackendPoolSize(mode proxy.ProxyMode, primaryPoolSize, elasticKVPo | |
| } | ||
|
|
||
| func defaultSecondaryWriteConcurrency(poolSize int) int { | ||
| return atLeastOne(poolSize / secondaryConcurrencyDivisor) | ||
| return atLeastOne(poolSize / secondaryWriteConcurrencyDivisor) | ||
| } | ||
|
|
||
| func defaultSecondaryScriptConcurrency(writeConcurrency int) int { | ||
| return atLeastOne(writeConcurrency / secondaryConcurrencyDivisor) | ||
| concurrency := atLeastOne(writeConcurrency / secondaryScriptConcurrencyDivisor) | ||
| if concurrency > secondaryScriptConcurrencyCap { | ||
| return secondaryScriptConcurrencyCap | ||
| } | ||
| return concurrency | ||
| } | ||
|
|
||
| func defaultSecondaryBlockingReplayConcurrency(poolSize, writeConcurrency int) int { | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.