mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-06 17:18:35 +08:00
enhance: smaller backoff configuration for wal balancer to make faster recovery (#42869)
issue: #42835 Signed-off-by: chyezh <chyezh@outlook.com>
This commit is contained in:
parent
b902960057
commit
a081906fb4
@ -1211,13 +1211,16 @@ streaming:
|
|||||||
# The interval of balance task trigger at background, 1 min by default.
|
# The interval of balance task trigger at background, 1 min by default.
|
||||||
# It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDuration
|
# It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDuration
|
||||||
triggerInterval: 1m
|
triggerInterval: 1m
|
||||||
# The initial interval of balance task trigger backoff, 50 ms by default.
|
# The initial interval of balance task trigger backoff, 10 ms by default.
|
||||||
# It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDuration
|
# It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDuration
|
||||||
backoffInitialInterval: 50ms
|
backoffInitialInterval: 10ms
|
||||||
backoffMultiplier: 2 # The multiplier of balance task trigger backoff, 2 by default
|
backoffMultiplier: 2 # The multiplier of balance task trigger backoff, 2 by default
|
||||||
# The timeout of wal balancer operation, 10s by default.
|
# The max interval of balance task trigger backoff, 5s by default.
|
||||||
|
# It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDuration
|
||||||
|
backoffMaxInterval: 5s
|
||||||
|
# The timeout of wal balancer operation, 30s by default.
|
||||||
# If the operation exceeds this timeout, it will be canceled.
|
# If the operation exceeds this timeout, it will be canceled.
|
||||||
operationTimeout: 10s
|
operationTimeout: 30s
|
||||||
balancePolicy:
|
balancePolicy:
|
||||||
name: vchannelFair # The multiplier of balance task trigger backoff, 2 by default
|
name: vchannelFair # The multiplier of balance task trigger backoff, 2 by default
|
||||||
vchannelFair:
|
vchannelFair:
|
||||||
|
|||||||
@ -458,7 +458,7 @@ func (f *backoffConfigFetcher) BackoffConfig() typeutil.BackoffConfig {
|
|||||||
return typeutil.BackoffConfig{
|
return typeutil.BackoffConfig{
|
||||||
InitialInterval: paramtable.Get().StreamingCfg.WALBalancerBackoffInitialInterval.GetAsDurationByParse(),
|
InitialInterval: paramtable.Get().StreamingCfg.WALBalancerBackoffInitialInterval.GetAsDurationByParse(),
|
||||||
Multiplier: paramtable.Get().StreamingCfg.WALBalancerBackoffMultiplier.GetAsFloat(),
|
Multiplier: paramtable.Get().StreamingCfg.WALBalancerBackoffMultiplier.GetAsFloat(),
|
||||||
MaxInterval: paramtable.Get().StreamingCfg.WALBalancerTriggerInterval.GetAsDurationByParse(),
|
MaxInterval: paramtable.Get().StreamingCfg.WALBalancerBackoffMaxInterval.GetAsDurationByParse(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5634,6 +5634,7 @@ type streamingConfig struct {
|
|||||||
WALBalancerTriggerInterval ParamItem `refreshable:"true"`
|
WALBalancerTriggerInterval ParamItem `refreshable:"true"`
|
||||||
WALBalancerBackoffInitialInterval ParamItem `refreshable:"true"`
|
WALBalancerBackoffInitialInterval ParamItem `refreshable:"true"`
|
||||||
WALBalancerBackoffMultiplier ParamItem `refreshable:"true"`
|
WALBalancerBackoffMultiplier ParamItem `refreshable:"true"`
|
||||||
|
WALBalancerBackoffMaxInterval ParamItem `refreshable:"true"`
|
||||||
WALBalancerOperationTimeout ParamItem `refreshable:"true"`
|
WALBalancerOperationTimeout ParamItem `refreshable:"true"`
|
||||||
|
|
||||||
// balancer Policy
|
// balancer Policy
|
||||||
@ -5687,9 +5688,9 @@ It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDura
|
|||||||
p.WALBalancerBackoffInitialInterval = ParamItem{
|
p.WALBalancerBackoffInitialInterval = ParamItem{
|
||||||
Key: "streaming.walBalancer.backoffInitialInterval",
|
Key: "streaming.walBalancer.backoffInitialInterval",
|
||||||
Version: "2.6.0",
|
Version: "2.6.0",
|
||||||
Doc: `The initial interval of balance task trigger backoff, 50 ms by default.
|
Doc: `The initial interval of balance task trigger backoff, 10 ms by default.
|
||||||
It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDuration`,
|
It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDuration`,
|
||||||
DefaultValue: "50ms",
|
DefaultValue: "10ms",
|
||||||
Export: true,
|
Export: true,
|
||||||
}
|
}
|
||||||
p.WALBalancerBackoffInitialInterval.Init(base.mgr)
|
p.WALBalancerBackoffInitialInterval.Init(base.mgr)
|
||||||
@ -5701,12 +5702,21 @@ It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDura
|
|||||||
Export: true,
|
Export: true,
|
||||||
}
|
}
|
||||||
p.WALBalancerBackoffMultiplier.Init(base.mgr)
|
p.WALBalancerBackoffMultiplier.Init(base.mgr)
|
||||||
|
p.WALBalancerBackoffMaxInterval = ParamItem{
|
||||||
|
Key: "streaming.walBalancer.backoffMaxInterval",
|
||||||
|
Version: "2.6.0",
|
||||||
|
Doc: `The max interval of balance task trigger backoff, 5s by default.
|
||||||
|
It's ok to set it into duration string, such as 30s or 1m30s, see time.ParseDuration`,
|
||||||
|
DefaultValue: "5s",
|
||||||
|
Export: true,
|
||||||
|
}
|
||||||
|
p.WALBalancerBackoffMaxInterval.Init(base.mgr)
|
||||||
p.WALBalancerOperationTimeout = ParamItem{
|
p.WALBalancerOperationTimeout = ParamItem{
|
||||||
Key: "streaming.walBalancer.operationTimeout",
|
Key: "streaming.walBalancer.operationTimeout",
|
||||||
Version: "2.6.0",
|
Version: "2.6.0",
|
||||||
Doc: `The timeout of wal balancer operation, 10s by default.
|
Doc: `The timeout of wal balancer operation, 30s by default.
|
||||||
If the operation exceeds this timeout, it will be canceled.`,
|
If the operation exceeds this timeout, it will be canceled.`,
|
||||||
DefaultValue: "10s",
|
DefaultValue: "30s",
|
||||||
Export: true,
|
Export: true,
|
||||||
}
|
}
|
||||||
p.WALBalancerOperationTimeout.Init(base.mgr)
|
p.WALBalancerOperationTimeout.Init(base.mgr)
|
||||||
|
|||||||
@ -631,7 +631,8 @@ func TestComponentParam(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("test streamingConfig", func(t *testing.T) {
|
t.Run("test streamingConfig", func(t *testing.T) {
|
||||||
assert.Equal(t, 1*time.Minute, params.StreamingCfg.WALBalancerTriggerInterval.GetAsDurationByParse())
|
assert.Equal(t, 1*time.Minute, params.StreamingCfg.WALBalancerTriggerInterval.GetAsDurationByParse())
|
||||||
assert.Equal(t, 50*time.Millisecond, params.StreamingCfg.WALBalancerBackoffInitialInterval.GetAsDurationByParse())
|
assert.Equal(t, 10*time.Millisecond, params.StreamingCfg.WALBalancerBackoffInitialInterval.GetAsDurationByParse())
|
||||||
|
assert.Equal(t, 5*time.Second, params.StreamingCfg.WALBalancerBackoffMaxInterval.GetAsDurationByParse())
|
||||||
assert.Equal(t, 2.0, params.StreamingCfg.WALBalancerBackoffMultiplier.GetAsFloat())
|
assert.Equal(t, 2.0, params.StreamingCfg.WALBalancerBackoffMultiplier.GetAsFloat())
|
||||||
assert.Equal(t, "vchannelFair", params.StreamingCfg.WALBalancerPolicyName.GetValue())
|
assert.Equal(t, "vchannelFair", params.StreamingCfg.WALBalancerPolicyName.GetValue())
|
||||||
assert.Equal(t, 0.4, params.StreamingCfg.WALBalancerPolicyVChannelFairPChannelWeight.GetAsFloat())
|
assert.Equal(t, 0.4, params.StreamingCfg.WALBalancerPolicyVChannelFairPChannelWeight.GetAsFloat())
|
||||||
@ -639,7 +640,7 @@ func TestComponentParam(t *testing.T) {
|
|||||||
assert.Equal(t, 0.01, params.StreamingCfg.WALBalancerPolicyVChannelFairAntiAffinityWeight.GetAsFloat())
|
assert.Equal(t, 0.01, params.StreamingCfg.WALBalancerPolicyVChannelFairAntiAffinityWeight.GetAsFloat())
|
||||||
assert.Equal(t, 0.01, params.StreamingCfg.WALBalancerPolicyVChannelFairRebalanceTolerance.GetAsFloat())
|
assert.Equal(t, 0.01, params.StreamingCfg.WALBalancerPolicyVChannelFairRebalanceTolerance.GetAsFloat())
|
||||||
assert.Equal(t, 3, params.StreamingCfg.WALBalancerPolicyVChannelFairRebalanceMaxStep.GetAsInt())
|
assert.Equal(t, 3, params.StreamingCfg.WALBalancerPolicyVChannelFairRebalanceMaxStep.GetAsInt())
|
||||||
assert.Equal(t, 10*time.Second, params.StreamingCfg.WALBalancerOperationTimeout.GetAsDurationByParse())
|
assert.Equal(t, 30*time.Second, params.StreamingCfg.WALBalancerOperationTimeout.GetAsDurationByParse())
|
||||||
assert.Equal(t, 1.0, params.StreamingCfg.WALBroadcasterConcurrencyRatio.GetAsFloat())
|
assert.Equal(t, 1.0, params.StreamingCfg.WALBroadcasterConcurrencyRatio.GetAsFloat())
|
||||||
assert.Equal(t, 10*time.Second, params.StreamingCfg.TxnDefaultKeepaliveTimeout.GetAsDurationByParse())
|
assert.Equal(t, 10*time.Second, params.StreamingCfg.TxnDefaultKeepaliveTimeout.GetAsDurationByParse())
|
||||||
assert.Equal(t, 30*time.Second, params.StreamingCfg.WALWriteAheadBufferKeepalive.GetAsDurationByParse())
|
assert.Equal(t, 30*time.Second, params.StreamingCfg.WALWriteAheadBufferKeepalive.GetAsDurationByParse())
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user