Distinguish zero concurrency from slow/failed scraping when bucketing
- Dominant language
- Go
- Stars
- 6.1k
- Forks
- 1.2k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 2
Description
## Describe the feature
Currently we [do not differentiate between](https://github.com/knative/serving/blob/320e01a596acefca56f025c2ef0e9d394e453267/pkg/autoscaler/aggregation/bucketing.go#L184) a scrape that _actually_ reports zero concurrency from a replica and just not having data for a particular bucket. This is fine if the network is fast and autoscaler is not overloaded because we will have data ~every second, but on a slow or overloaded network (or e.g. with a resource constrained host => slow QP response to scrapes) it could cause issues: when we average over the bucket we could think we have lower load than we do, and scale down (or fail to scale up) replicas incorrectly.
(This is _somewhat_ related to https://github.com/knative/serving/issues/8377 in that if we introduce a work pool there's a greater danger of things backed up in the queue not getting stats every second).
Contributor guide
Assessment
This issue has not been assessed yet.