diff --git a/docs/generated/settings/settings.html b/docs/generated/settings/settings.html
index 54883440a9fd..fe736143bdb3 100644
--- a/docs/generated/settings/settings.html
+++ b/docs/generated/settings/settings.html
@@ -46,7 +46,7 @@
kv.range_split.by_load_enabled | boolean | true | allow automatic splits of ranges based on where load is concentrated |
kv.range_split.load_qps_threshold | integer | 2500 | the QPS over which, the range becomes a candidate for load based splitting |
kv.rangefeed.enabled | boolean | false | if set, rangefeed registration is enabled |
-kv.replica_circuit_breaker.slow_replication_threshold | duration | 0s | duration after which slow proposals trip the per-Replica circuit breaker (zero duration disables breakers) |
+kv.replica_circuit_breaker.slow_replication_threshold | duration | 1m0s | duration after which slow proposals trip the per-Replica circuit breaker (zero duration disables breakers) |
kv.replica_stats.addsst_request_size_factor | integer | 50000 | the divisor that is applied to addsstable request sizes, then recorded in a leaseholders QPS; 0 means all requests are treated as cost 1 |
kv.replication_reports.interval | duration | 1m0s | the frequency for generating the replication_constraint_stats, replication_stats_report and replication_critical_localities reports (set to 0 to disable) |
kv.snapshot_rebalance.max_rate | byte size | 32 MiB | the rate limit (bytes/sec) to use for rebalance and upreplication snapshots |
diff --git a/pkg/kv/kvserver/replica_circuit_breaker.go b/pkg/kv/kvserver/replica_circuit_breaker.go
index 300f1db2fd62..8f68bd323a24 100644
--- a/pkg/kv/kvserver/replica_circuit_breaker.go
+++ b/pkg/kv/kvserver/replica_circuit_breaker.go
@@ -15,6 +15,7 @@ import (
"sync/atomic"
"time"
+ "github.com/cockroachdb/cockroach/pkg/base"
"github.com/cockroachdb/cockroach/pkg/clusterversion"
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/liveness"
"github.com/cockroachdb/cockroach/pkg/roachpb"
@@ -42,7 +43,13 @@ type replicaInCircuitBreaker interface {
}
var defaultReplicaCircuitBreakerSlowReplicationThreshold = envutil.EnvOrDefaultDuration(
- "COCKROACH_REPLICA_CIRCUIT_BREAKER_SLOW_REPLICATION_THRESHOLD", 0,
+ "COCKROACH_REPLICA_CIRCUIT_BREAKER_SLOW_REPLICATION_THRESHOLD",
+ // SlowRequestThreshold is used in various places to log warnings on slow
+ // request phases. We are even more conservative about the circuit breakers,
+ // i.e. multiply by a factor. This is mainly defense in depth; at time of
+ // writing the slow request threshold is 15s which *should* also be good
+ // enough for circuit breakers since it's already fairly conservative.
+ 4*base.SlowRequestThreshold,
)
var replicaCircuitBreakerSlowReplicationThreshold = settings.RegisterPublicDurationSettingWithExplicitUnit(