This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push:
new 71a254d6fc1 update wg document (#1627)
71a254d6fc1 is described below
commit 71a254d6fc1163248c14a6758632a111d08e71ad
Author: wangbo <[email protected]>
AuthorDate: Thu Dec 26 21:43:52 2024 +0800
update wg document (#1627)
## Versions
- [x] dev
- [ ] 3.0
- [ ] 2.1
- [ ] 2.0
## Languages
- [x] Chinese
- [ ] English
## Docs Checklist
- [ ] Checked by AI
- [ ] Test Cases Built
---
.../concurrency-control-and-queuing.md | 10 +++---
.../workload-management/sql-blocking.md | 39 +++++++++++---------
.../workload-management/workload-group.md | 41 ++++++++--------------
3 files changed, 42 insertions(+), 48 deletions(-)
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/concurrency-control-and-queuing.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/concurrency-control-and-queuing.md
index c3212be24df..f9b2c0f7f24 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/concurrency-control-and-queuing.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/concurrency-control-and-queuing.md
@@ -41,12 +41,12 @@ properties (
**参数说明**
-* max_concurrency:最大查询并发数,默认值为整型最大值,也就是不做并发的限制。运行中的查询数量达到该值时,新来的查询会进入排队的逻辑。
-
-* max_queue_size:查询排队队列的长度,当排队队列已满时,新来的查询会被拒绝。默认值为 0,含义是不排队,当查询数达到最大时查询会直接失败。
-
-* queue_timeout:查询在排队队列中的超时时间,单位为毫秒,如果查询在队列中的排队时间超过这个值,那么就会直接抛出异常给客户端。默认值为
0,含义是不排队,查询进入队列后立即返回失败。
+| 属性名称 | 数据类型 | 默认值 | 取值范围 | 说明
|
+|------------------------------|---------|-----|-----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| max_concurrency | 整型 | 2147483647 | [0, 2147483647] |
可选,最大查询并发数,默认值为整型最大值,也就是不做并发的限制。运行中的查询数量达到最大并发时,新来的查询会进入排队的逻辑。
|
+| max_queue_size | 整型 | 0 | [0, 2147483647] |
可选,查询排队队列的长度,当排队队列已满时,新来的查询会被拒绝。默认值为 0,含义是不排队。当排队队列已满时,新来的查询会直接失败。
|
+| queue_timeout | 整型 | 0 | [0, 2147483647] |
可选,查询在排队队列中的最大等待时间,单位为毫秒。如果查询在队列中的排队时间超过这个值,那么就会直接抛出异常给客户端。默认值为
0,含义是不排队,查询进入队列后立即返回失败。
|
如果集群中目前有1台FE,那么这个配置的含义为,集群中同时运行的查询数最大不超过10个,当最大并发已满时,新来的查询会排队,队列的长度不超过20。查询在队列中排队的时间最长为3s,排队超过3s的查询会直接返回失败给客户端。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/sql-blocking.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/sql-blocking.md
index 8da5b0904d8..55e91e02830 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/sql-blocking.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/sql-blocking.md
@@ -249,27 +249,32 @@ properties('enabled'='true');
```
在创建 Workload Policy 时需要指定以下内容:
-- Conditions 表示策略触发条件,可以多个 Condition 串联,使用逗号“,”隔开,表示“与”的关系。在上例中 query_time >
1000 表示在查询时间大于 1s 时触发 Policy;
-- Action 表示条件触发时采取的动作,目前一个 Policy 只能定义一个 Action(除
set_session_variable)。在上例中,cancel_query 表示取消查询;
+- Conditions 表示策略触发条件,可以多个 Condition 串联,使用逗号“,”隔开,表示“与”的关系。在上例中 query_time >
1000 表示在查询时间大于 1s 时触发 Policy;目前支持的 Conditions 有:
-- Properties,定义了当前 Policy 的属性,包括是否启用和优先级。
+| Conditions | 说明
|
+|-----------------------|---------------------------------------------------------------------|
+| username | 查询携带的用户名,只会在FE触发 set_session_variable Action
|
+| be_scan_rows | 一个 SQL 在单个 BE 进程内 scan 的行数,如果这个 SQL 在 BE
上是多并发执行,那么就是多个并发的累加值。 |
+| be_scan_bytes | 一个 SQL 在单个 BE 进程内 scan 的字节数,如果这个 SQL 在 BE
上是多并发执行,那么就是多个并发的累加值,单位是字节。 |
+| query_time | 一个 SQL 在单个 BE 进程上的运行时间,时间单位是毫秒。
|
+| query_be_memory_bytes | 一个 SQL 在单个 BE 进程内使用的内存用量,如果这个 SQL 在 BE
上是多并发执行,那么就是多个并发的累加值,单位是字节。 |
+
+- Action 表示条件触发时采取的动作,目前一个 Policy 只能定义一个 Action(除
set_session_variable)。在上例中,cancel_query 表示取消查询;目前支持的 Actions 有:
-一个 Policy 只能指定作用在 FE 或 BE 其中一个组件,无法同时作用在 FE 与 BE 上。这是因为 FE 与 BE 有独立的
Conditions 与 Actions 选项,Policy 不区分 FE 与 BE 组件。下表中列出 Policy 的子句选项:
-
-| 组件 | 子句 | 选项 | 说明 |
-|------|------------|-----|-----|
-| FE | Conditions | username | 当一个查询的 username 为某个值时,就会触发相应的 Action。 |
-| | Actions | set_session_variable | 触发 set session variable 语句。同一个
Policy 可以有多个 set_session_variable 选项。 |
-| BE | Conditions | be_scan_rows | 一个 SQL 在单个 BE 进程内 scan
的行数,如果这个 SQL 在 BE 上是多并发执行,那么就是多个并发的累加值。
|
-| | | be_scan_bytes | 一个 SQL 在单个 BE 进程内 scan
的字节数,如果这个 SQL 在 BE 上是多并发执行,那么就是多个并发的累加值,单位是字节。
|
-| | | query_time | 一个 SQL 在单个 BE
进程上的运行时间,时间单位是毫秒。
|
-| | | query_be_memory_bytes | 一个 SQL 在单个 BE
进程内使用的内存用量,如果这个 SQL 在 BE 上是多并发执行,那么就是多个并发的累加值,单位是字节。
|
-| | Actions | cancel_query | 取消查询。
|
-| FE&BE | properties | enabled | 取值为 true 或
false,默认值为 true,表示当前 Policy 处于启用状态,false 表示当前 Policy 处于禁用状态。
|
-| | | priority | 取值范围为 0 到 100
的正整数,默认值为 0,代表 Policy 的优先级,该值越大,优先级越高。这个属性的主要作用是,当匹配到多个 Policy 时,选择优先级最高的
Policy。
|
-| | | workload_group | 目前一个 Policy
可以绑定一个 workload group,代表这个 Policy 只对某个 workload group 生效。默认为空,代表对所有查询生效。
|
+| Conditions | 说明
|
+|-----------------------|---------------------------------------------------------------------|
+| username | 查询携带的用户名,只会在FE触发 set_session_variable Action
|
+| be_scan_rows | 一个 SQL 在单个 BE 进程内 scan 的行数,如果这个 SQL 在 BE
上是多并发执行,那么就是多个并发的累加值。 |
+| be_scan_bytes | 一个 SQL 在单个 BE 进程内 scan 的字节数,如果这个 SQL 在 BE
上是多并发执行,那么就是多个并发的累加值,单位是字节。 |
+| query_time | 一个 SQL 在单个 BE 进程上的运行时间,时间单位是毫秒。
|
+| query_be_memory_bytes | 一个 SQL 在单个 BE 进程内使用的内存用量,如果这个 SQL 在 BE
上是多并发执行,那么就是多个并发的累加值,单位是字节。 |
+- Properties,定义了当前 Policy 的属性,包括是否启用和优先级。
+ - enabled,取值为 true 或 false,默认值为 true,表示当前 Policy 处于启用状态,false 表示当前 Policy
处于禁用状态。
+ - priority,取值范围为 0 到 100 的正整数,默认值为 0,代表 Policy
的优先级,该值越大,优先级越高。这个属性的主要作用是,当匹配到多个 Policy 时,选择优先级最高的 Policy。
+ - workload_group,目前一个 Policy 可以绑定一个 workload group,代表这个 Policy 只对某个 workload
group 生效。默认为空,代表对所有查询生效。
+
### 将熔断策略绑定 Workload Group
默认情况下,Workload Policy 会对所有支持的查询生效。如果想指定 Policy 只针对与某一个 Workload Group,需要通过
workload_group 选项绑定 Workload Group。语句如下:
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-group.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-group.md
index cba3b46c691..ee4422d29af 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-group.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-group.md
@@ -151,33 +151,22 @@ Query OK, 0 rows affected (0.03 sec)
### Workload Group属性
-* cpu_share: 可选,默认值为 -1。有效值的取值范围是正整数。用于设置 workload group 获取 CPU 时间的多少,可以实现 CPU
资源软隔离。cpu_share 是相对值,表示正在运行的 workload group 可获取 CPU 资源的权重。例如,用户创建了 3 个 workload
group g-a、g-b 和 g-c,cpu_share 分别为 10、30、40,某一时刻 g-a 和 g-b 正在跑任务,而 g-c 没有任务,此时
g-a 可获得 25% (10 / (10 + 30)) 的 CPU 资源,而 g-b 可获得 75% 的 CPU 资源。如果系统只有一个 workload
group 正在运行,则不管其 cpu_share 的值为多少,它都可获取全部的 CPU 资源。
-* memory_limit: 可选,默认值 -1,含义为不限制内存使用。有效值的取值范围 1%~100%,用于设置 workload group 可以使用
be 内存的百分比。Workload Group 可用的最大内存,所有 group 的累加值不可以超过 100%,通常与
enable_memory_overcommit 配合使用。如果一个机器的内存为 64G,mem_limit=50%,那么该 group
的实际物理内存=64G * 90%(be conf mem_limit) * 50%= 28.8G,这里的 90% 是 BE 进程级别的 mem_limit
参数,限制整个 BE 进程的内存用量。一个集群中所有 Workload Group 的 memory_limit 的累加值不能超过 100%。
-
-* enable_memory_overcommit: 可选,用于开启 workload group 内存软隔离,默认为 true。如果设置为
false,则该 workload group 为内存硬隔离,系统检测到 workload group 内存使用超出限制后将立即 cancel
组内内存占用最大的若干个任务,以释放超出的内存;如果设置为 true,则该 workload group 为内存软隔离,如果系统有空闲内存资源则该
workload group 在超出 memory_limit 的限制后可继续使用系统内存,在系统总内存紧张时会 cancel
组内内存占用最大的若干个任务,释放部分超出的内存以缓解系统内存压力。建议在有 workload group 开启该配置时,所有 workload group
的 memory_limit 总和低于 100%,剩余部分用于 workload group 内存超发。
-
-* cpu_hard_limit:可选,默认值 -1,含义为不限制CPU上限。取值范围 1%~100%,CPU 硬限制模式下,Workload Group
最大可用的 CPU 百分比,不管当前机器的 CPU 资源是否被用满,Workload Group 的最大 CPU 用量都不能超过 cpu_hard_limit,
- 所有 Workload Group 的 cpu_hard_limit 累加值不能超过 100%。2.1 版本新增属性,2.0版本不支持该功能。
-
-* max_concurrency:可选,最大查询并发数,默认值为整型最大值,也就是不做并发的限制。运行中的查询数量达到该值时,新来的查询会进入排队的逻辑。
-
-* max_queue_size:可选,查询排队队列的长度,当排队队列已满时,新来的查询会被拒绝。默认值为
0,含义是不排队,当查询数达到最大时查询会直接失败。
-
-* queue_timeout:可选,查询在排队队列中的超时时间,单位为毫秒,如果查询在队列中的排队时间超过这个值,那么就会直接抛出异常给客户端。默认值为
0,含义是不排队,查询进入队列后立即返回失败。
-
-* scan_thread_num:可选,当前 workload group 用于 scan 的线程个数,默认值为 -1,含义是不生效,此时以 be
配置中的 scan 线程数为准。取值为大于 0 的整数。
-
-*
max_remote_scan_thread_num:可选,读外部数据源的scan线程池的最大线程数,默认值为-1,当该值为-1时,实际的线程数由BE自行决定,通常和核数相关。
-
-*
min_remote_scan_thread_num:可选,读外部数据源的scan线程池的最小线程数,默认值为-1,当该值为-1时,实际的线程数由BE自行决定,通常和核数相关。
-
-* tag:可选,默认为空,为Workload Group指定标签,相同标签的Workload
Group资源累加值不能超过100%,如果期望指定多个值,可以使用英文逗号分隔。
-
-*
read_bytes_per_second:可选,含义为读Doris内表时的最大IO吞吐,默认值为-1,也就是不限制IO带宽。需要注意的是这个值并不绑定磁盘,而是绑定文件夹。
-
比如为Doris配置了2个文件夹用于存放内表数据,那么每个文件夹的最大读IO不会超过该值,如果这2个文件夹都配置到同一块盘上,最大吞吐控制就会变成2倍的read_bytes_per_second。落盘的文件目录也受该值的约束。
-
-* remote_read_bytes_per_second:可选,含义为读Doris外表时的最大IO吞吐,默认值为-1,也就是不限制IO带宽。
+| 属性名称 | 数据类型 | 默认值 | 取值范围 | 说明
|
+|------------------------------|---------|-----|-----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| cpu_share | 整型 | -1 | [1, 10000] |
可选,CPU软限模式下生效,取值范围和使用的CGroup版本有关,下文有详细描述。cpu_share 代表了 Workload Group
可获得CPU时间的权重,值越大,可获得的CPU时间越多。例如,用户创建了 3 个 Workload Group g-a、g-b 和 g-c,cpu_share
分别为 10、30、40,某一时刻 g-a 和 g-b 正在跑任务,而 g-c 没有任务,此时 g-a 可获得 25% (10 / (10 + 30)) 的
CPU 资源,而 g-b 可获得 75% 的 CPU 资源。如果系统只有一个 Workload Group 正在运行,则不管其 cpu_share
的值为多少,它都可获取全部的 CPU 资源 。 |
+| memory_limit | 浮点 | -1 | (0%, 100%] |
可选,开启内存硬限时代表当前 Workload Group 最大可用内存,默认值代表不限制内存。所有 Workload Group 的
memory_limit 累加值不可以超过 100%,通常与 enable_memory_overcommit 配合使用。如果一个机器的内存为
64G,mem_limit=50%,那么该 group 的实际物理内存=64G * 90%(be conf mem_limit) * 50%=
28.8G,这里的 90% 是 BE 进程级别的 mem_limit 参数,限制整个 BE 进程的内存用量。一个集群中所有 Workload Group 的
memory_limit 的累加值不能超过 100%。 |
+| enable_memory_overcommit | 布尔 | true | true, false |
可选,用于控制当前 Workload Group 的内存限制是硬限还是软限,默认为 true。如果设置为 false,则该 workload group
为内存硬隔离,系统检测到 workload group 内存使用超出限制后将立即 cancel 组内内存占用最大的若干个任务,以释放超出的内存;如果设置为
true,则该 Workload Group 为内存软隔离,如果系统有空闲内存资源则该 Workload Group 在超出 memory_limit
的限制后可继续使用系统内存,在系统总内存紧张时会 cancel 组内内存占用最大的若干个任务,释放部分超出的内存以缓解系统内存压力。建议所有 workload
group 的 memory_limit 总和低于 100%,为BE进程中的其他组件保留一些内存。 |
+| cpu_hard_limit | 整型 | -1 | [1%, 100%] |
可选,CPU 硬限制模式下生效,Workload Group 最大可用 CPU 百分比,不管当前机器的 CPU 资源是否被用满,Workload Group
的最大 CPU 用量都不能超过 cpu_hard_limit,所有 Workload Group 的 cpu_hard_limit 累加值不能超过
100%。2.1 版本新增属性,2.0版本不支持该功能。
|
+| max_concurrency | 整型 | 2147483647 | [0, 2147483647] |
可选,最大查询并发数,默认值为整型最大值,也就是不做并发的限制。运行中的查询数量达到最大并发时,新来的查询会进入排队的逻辑。
|
+| max_queue_size | 整型 | 0 | [0, 2147483647] |
可选,查询排队队列的长度,当排队队列已满时,新来的查询会被拒绝。默认值为 0,含义是不排队。当排队队列已满时,新来的查询会直接失败。
|
+| queue_timeout | 整型 | 0 | [0, 2147483647] |
可选,查询在排队队列中的最大等待时间,单位为毫秒。如果查询在队列中的排队时间超过这个值,那么就会直接抛出异常给客户端。默认值为
0,含义是不排队,查询进入队列后立即返回失败。
|
+| scan_thread_num | 整型 | -1 | [1, 2147483647] |
可选,当前 workload group 用于 scan 的线程个数。当该属性为 -1,含义是不生效,此时在BE上的实际取值为 BE
配置中的```doris_scanner_thread_pool_thread_num```。
|
+| max_remote_scan_thread_num | 整型 | -1 | [1, 2147483647] |
可选,读外部数据源的scan线程池的最大线程数。当该属性为-1时,实际的线程数由BE自行决定,通常和核数相关。
|
+| min_remote_scan_thread_num | 整型 | -1 | [1, 2147483647] |
可选,读外部数据源的scan线程池的最小线程数。当该属性为-1时,实际的线程数由BE自行决定,通常和核数相关。
|
+| tag | 字符串 | 空 | - | 为Workload
Group指定分组标签,相同标签的Workload Group资源累加值不能超过100%;如果期望指定多个值,可以使用英文逗号分隔。
|
+| read_bytes_per_second | 整型 | -1 | [1,
9223372036854775807] |
可选,含义为读Doris内表时的最大IO吞吐,默认值为-1,也就是不限制IO带宽。需要注意的是这个值并不绑定磁盘,而是绑定文件夹。比如为Doris配置了2个文件夹用于存放内表数据,那么每个文件夹的最大读IO不会超过该值,如果这2个文件夹都配置到同一块盘上,最大吞吐控制就会变成2倍的read_bytes_per_second。落盘的文件目录也受该值的约束。
|
+| remote_read_bytes_per_second | 整型 | -1 | [1, 9223372036854775807] |
可选,含义为读Doris外表时的最大IO吞吐,默认值为-1,也就是不限制IO带宽。
|
:::tip
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]