# [Known-Issues]TiKV reload 期间 TiDB duration 严重抖动

## Key Words

TiKV reload, duration 抖动, tikvRPC backoff

## Description

TiUP edit-config 修改 TiKV 配置参数后，执行 reload TiKV 时 TiDB duration 严重抖动，TiDB 日志发现 tikvRPC backoff 超时。

```golang
[WARN] [backoff.go:317] ["tikvRPC backoffer.maxSleep 40000ms is exceeded, errors:\nsend tikv request error: no available connections, ctx: ...]
```

## Root Cause

1. TiKV stop 时间过长，最长会超过 systemd stop 默认超时时间 90s。TiKV 收到 stop signal 时遇到自动 compaction，这类 compaction 会阻塞 stop 流程。

    待优化：TiKV stop 时直接 kill rocksdb 来加速 reload，<https://github.com/tikv/tikv/issues/13339>

2. TiDB 通过 HTTP API status 端口探测到 TiKV 存活，仍会重试发送请求，直至 bakcoff 超时。

    已修复：<https://github.com/pingcap/tidb/issues/25244>

## Diagnostic Steps

1. TiDB 日志有 ”tikvRPC backoffer.maxSleep 40000ms is exceeded“ 报错，TiDB slow query 日志也有大量 tikvRPC 类型的 backoff。

2. TiKV 从收到 "receive signal 15, stopping server..." 到重启完成经过了较长时间，最终可能超过 systemd stop timeout 时长（DefaultTimeoutStopSec=90s）被强制 kill -9；

TiKV stop 期间日志显示 "compact range finished" 或 "send compaction finished event to raftstore failed"，说明遇到正在进行的 compaction。

## Resolution

升级到 v4.0.14 及以上版本

## Workaround

手动 evict leader，等待 leader count 减到 0 后，执行  kill -9；或调小 systemd DefaultTimeoutStopSec，如遇到 TiKV stop 阻塞，超时自动 kill 进程。

## Affected Versions

v4.0.0 - v4.0.13
