Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TiKV: add quota limiter doc in config #8648

Merged
merged 11 commits into from
Mar 25, 2022
34 changes: 33 additions & 1 deletion tikv-configuration-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ TiKV 配置文件比命令行参数支持更多的选项。你可以在 [etc/con

## 全局配置

### abort-on-panic
### `abort-on-panic`

+ 设置 TiKV panic 时是否调用 `abort()` 退出进程。此选项影响 TiKV 是否允许系统生成 core dump 文件。

Expand Down Expand Up @@ -1574,3 +1574,35 @@ Raft Engine 相关的配置项。
+ 开启内存悲观锁功能。开启该功能后,悲观事务会尽可能在 TiKV 内存中存储悲观锁,而不将悲观锁写入磁盘,也不将悲观锁同步给其他副本,从而提升悲观事务的性能。但有较低概率出现悲观锁丢失的情况,可能会导致悲观事务提交失败。
+ 默认值:true
+ 注意:`in-memory` 仅在 `pipelined` 为 true 时生效。

## quota

用于前台限流 (Quota Limiter) 相关的配置项。

当 TiKV 部署的机型资源有限(如 4v CPU,16 G 内存)时,如果 TiKV 前台处理的读写请求量过大,会占用 TiKV 后台处理请求所需的 CPU 资源,最终影响 TiKV 性能的稳定性。此时,你可以使用前台限流相关的 quota 配置项以限制前台各类请求占用的 CPU 资源。触发该限制的请求会被强制等待一段时间以让出 CPU 资源。具体等待时间与新增请求量相关,最多不超过 [`max-delay-duration`](#max-delay-duration从-v600-版本开始引入) 的值。

> **警告:**
>
> - 前台限流是 TiDB 在 v6.0.0 中引入的实验特性,不建议在生产环境中使用。
> - 该功能仅适合在资源有限的环境中使用,以保证 TiKV 在该环境下可以长期稳定地运行。如果在资源丰富的机型环境中开启该功能,可能会导致读写请求量达到峰值时 TiKV 的性能下降的问题。
Copy link
Contributor

@TomShawn TomShawn Mar 29, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感觉”长期“比较含糊。多长是”长期“呢?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个时间点是:当后台的工作无法可持续的完成,不断累积更多待处理的任务以后,且后台累积任务而导致 write stall 等情况发生,从而使这个时间点以后的请求处理的时间无法和之前的处理时间相当


### `foreground-cpu-time`(从 v6.0.0 版本开始引入)

+ 限制处理 TiKV 前台读写请求所使用的 CPU 资源使用量,这是一个软限制。
+ 默认值:0(即无限制)
+ 单位:millicpu (当该参数值为 `1500` 时,前端请求会消耗 1.5v CPU)。

### `foreground-write-bandwidth`(从 v6.0.0 版本开始引入)

+ 限制事务写入的带宽,这是一个软限制。
+ 默认值:0KB(即无限制)

### `foreground-read-bandwidth`(从 v6.0.0 版本开始引入)

+ 限制事务读取数据和 Coprocessor 读取数据的带宽,这是一个软限制。
+ 默认值:0KB(即无限制)

### `max-delay-duration`(从 v6.0.0 版本开始引入)

+ 单次前台读写请求被强制等待的最大时间。
+ 默认值:500ms