dotnet / dotnet/yarp

Measure perf impact of per destination contention in TransportFailureRateHealthPolicy

Open
#538 2 comments 0 reactions 0 assignees View on GitHub
tenet-performance Type: Task
Dominant language
C#
Stars
9.6k
Forks
933
Avg merge
12d 18h
Merged PRs (30d)
2

Description

Currently, `TransportFailureRateHealthPolicy` locks on a destination to update the history of failed and succeeded requests. It's believed to become a bottleneck in scenarios with a high destination's RPS. We need to measure the performance to more precisely estimate potential negative impact. If it is proved to be substantial, we should consider ways of changing the algorithm to reduce that contention.

Configuration example that can be use for benchmarking:
```JSON
"Clusters": {
"cluster1": {
"HealthCheck": {
"Passive": {
"Enabled": "true",
"Policy": "TransportFailureRate",
"ReactivationPeriod": "00:02:00"
}
},
"Metadata": {
"TransportFailureRateHealthPolicy.RateLimit": "0.5"
},
"Destinations": {
"cluster1/destination1": {
"Address": "https://localhost:10000/"
}
}
}
```

We need to measure and compare throughput in two scenarios
- `HealthCheck/Passive` is **enabled**
- `HealthCheck/Passive` is **disabled**

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.