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 ca123a2e6f5 Fix cg (#1619) ca123a2e6f5 is described below commit ca123a2e6f591a1e160c84c80dadfe111befe150 Author: yiguolei <guo...@selectdb.com> AuthorDate: Thu Dec 26 08:27:40 2024 +0800 Fix cg (#1619) ## Versions - [x] dev - [ ] 3.0 - [ ] 2.1 - [ ] 2.0 ## Languages - [x] Chinese - [ ] English ## Docs Checklist - [ ] Checked by AI - [ ] Test Cases Built --------- Co-authored-by: yiguolei <yiguo...@gmail.com> --- .../workload-management/compute-group.md | 7 -- .../admin-manual/workload-management/kill-query.md | 90 ++++++++++--------- .../workload-management/sql-blocking.md | 11 ++- .../workload-management/workload-group.md | 100 ++++++++++----------- .../workload-management-summary.md | 4 +- .../admin-manual/workload-management/kill-query.md | 90 ++++++++++--------- .../workload-management-summary.md | 4 +- .../workload-management/compute-group.md | 7 -- .../admin-manual/workload-management/kill-query.md | 90 ++++++++++--------- .../workload-management-summary.md | 6 +- 10 files changed, 208 insertions(+), 201 deletions(-) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/compute-group.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/compute-group.md index f837e3d2f56..0a85fed5a49 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/compute-group.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/compute-group.md @@ -35,13 +35,6 @@ under the License. - 更灵活,在存算分离架构下,BE 本地的数据都是缓存,所以增加Compute Group 时不需要做笨重的数据迁移过程,新的Compute Group 只需在查询时缓存预热即可; - 隔离更彻底,数据的多副本存储由共享的存储层解决,所以任何Compute Group内的BE 宕机不会像Resource Group 那样导致导入失败。 - -本文档介绍如何使用计算组,其中涉及的操作包括: - -- 查看所有计算组 -- 计算组授权 -- 在用户级别绑定计算组 (`default_compute_group`) 以达到用户级别的隔离效果 - :::caution 注意 3.0.2 之前的版本中叫做计算集群(Compute Cluster)。 ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/kill-query.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/kill-query.md index 003ad954789..6b433e20dfc 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/kill-query.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/kill-query.md @@ -26,25 +26,27 @@ under the License. ## 获取查询列表 - 语法: - ```sql - SHOW PROCESSLIST; - ``` - 可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如: - - ```sql - SHOW PROCESSLIST; - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - | CurrentConnected | Id | User | Host | LoginTime | Catalog | Db | Command | Time | State | QueryId | Info | - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - | Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 | internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST | - | | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 | internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation | - | | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 | internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS | - | | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 | internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT DATABASE() | - | | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 | internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test | - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - 5 rows in set (0.00 sec) - ``` +语法: + +```sql +SHOW PROCESSLIST; +``` + +可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如: + +```sql +SHOW PROCESSLIST; ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +| CurrentConnected | Id | User | Host | LoginTime | Catalog | Db | Command | Time | State | QueryId | Info | ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +| Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 | internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST | +| | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 | internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation | +| | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 | internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS | +| | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 | internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT DATABASE() | +| | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 | internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test | ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +5 rows in set (0.00 sec) +``` - Id 是连接的唯一标识,也可以称为processlist_id; @@ -54,30 +56,34 @@ under the License. ## Kill 查询 - 语法: - - ```sql - KILL QUERY query_id | processlist_id - ``` - 用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如: - - ```sql - kill query 55; - Query OK, 0 rows affected (0.01 sec) - ``` - 表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。 - - ```sql - kill query 'f02603dc163a4da3-beebbb5d1ced760c'; - Query OK, 0 rows affected (0.01 sec) - ``` - 表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55 实际是同一个Query。 +语法: + +```sql +KILL QUERY query_id | processlist_id +``` + +用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如: + +```sql +kill query 55; +Query OK, 0 rows affected (0.01 sec) +``` + +表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。 + +```sql +kill query 'f02603dc163a4da3-beebbb5d1ced760c'; +Query OK, 0 rows affected (0.01 sec) +``` + +表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55 实际是同一个Query。 ## Kill 连接 - 语法: +语法: + +```sql +KILL CONNECTION processlist_id +``` - ```sql - KILL CONNECTION processlist_id - ``` - 表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。 \ No newline at end of file +表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。 \ No newline at end of file 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 7d8fd61983e..9d9cafffa08 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 @@ -214,12 +214,15 @@ A:可以。修改阻止规则,将其属性中的"enable"改为"false"即可 A:阻止规则的正则表达式使用 java 的正则表达式规范。常用表达式可以参考 SQL 语法手册。完整的手册可以参考 https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html ## Workload Policy -Workload Policy主要用于对运行时状态不符合预期的查询进行熔断,避免部分大查询占用过多资源从而影响集群的稳定性,常用的运行时监控指标如下: -* 查询时间 -* 查询在单BE上的扫描行数/扫描字节数 + +SQL Block Rule 是一种在规划时进行熔断的配置,但是由于规划中代价的计算可能不准确(尤其是针对一些非常复杂的查询时,更加难以准确估算),所以会导致规则不生效或者误判。Workload Policy 弥补了这个缺陷,它可以在查询运行时对一些指标进行实时的监测,对运行时状态不符合预期的查询进行熔断,避免不符合预期的大查询占用过多资源从而影响集群的稳定性,常用的运行时监控指标如下: + +* 查询执行时间 +* 查询在单BE上的扫描行数 +* 查询在单BE上的扫描行数扫描字节数 * 查询的在单BE上的内存使用 -### 熔断策略范围 +### 版本说明 自 Doris 2.1 版本起,可以通过 Workload Policy 可以实现大查询的熔断。 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 2e3914b64ff..611860526c9 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 @@ -26,56 +26,16 @@ under the License. ## 原理 -Workload Group的原理如下图所示,通过对BE内的资源(CPU,IO,Memory)进行细粒度的划分或者限制,达到资源隔离的目的。目前支持的能力包括: +Workload Group的原理如下图所示,它通过对BE内的资源(CPU,IO,Memory)进行细粒度的划分或者限制,达到资源隔离的目的。目前支持的能力包括: -* 管理CPU资源,支持CPU硬限和CPU软限 -* 管理内存资源,支持内存硬限和内存软限 -* 管理IO资源,包括读本地文件和远程文件产生的IO -* 控制集群中的最大查询数量 +* 管理CPU资源,支持CPU硬限和CPU软限; +* 管理内存资源,支持内存硬限和内存软限; +* 管理IO资源,包括读本地文件和远程文件产生的IO; +* 控制集群中的最大查询数量。  -## 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带宽。 - -:::tip - -1. 目前暂不支持 CPU 的软限和硬限的同时使用,一个集群某一时刻只能是软限或者硬限,下文中会描述切换方法。 - -2. 所有属性均为可选,但是在创建 Workload Group 时需要指定至少一个属性。 - -3. 需要注意 CGroup v1 CGroup v2 版本 CPU 软限默认值是有区别的, CGroup v1 的 CPU 软限默认值为1024,取值范围为2到262144。而 CGroup v2 的 CPU 软限默认值为100,取值范围是1到10000。 - 如果软限填了一个超出范围的值,这会导致 CPU 软限在BE修改失败。是在CGroup v1的环境上如果按照CGroup v2的默认值100设置,这可能导致这个workload group的优先级在该机器上是最低的。 - ::: - - ## 版本说明 - 自 Doris 2.0 版本开始提供 Workload Group 功能。在 Doris 2.0 版本中,Workload Group 功能不依赖于 CGroup,而 Doris 2.1 版本中需要依赖 CGroup。 @@ -191,6 +151,46 @@ Query OK, 0 rows affected (0.03 sec) 此时配置的 CPU 限制为软限。自 2.1 版本起,系统会自动创建一个名为```normal```的 group,不可删除。 +### 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带宽。 + +:::tip + +1. 目前暂不支持 CPU 的软限和硬限的同时使用,一个集群某一时刻只能是软限或者硬限,下文中会描述切换方法。 + +2. 所有属性均为可选,但是在创建 Workload Group 时需要指定至少一个属性。 + +3. 需要注意 CGroup v1 CGroup v2 版本 CPU 软限默认值是有区别的, CGroup v1 的 CPU 软限默认值为1024,取值范围为2到262144。而 CGroup v2 的 CPU 软限默认值为100,取值范围是1到10000。 + 如果软限填了一个超出范围的值,这会导致 CPU 软限在BE修改失败。是在CGroup v1的环境上如果按照CGroup v2的默认值100设置,这可能导致这个workload group的优先级在该机器上是最低的。 + ::: + ## 查看Workload Group 1. 通过show语句查看 ``` @@ -234,7 +234,7 @@ Query OK, 0 rows affected (0.01 sec) 可以参考:[DROP-WORKLOAD-GROUP](../../sql-manual/sql-statements/Data-Definition-Statements/Drop/DROP-WORKLOAD-GROUP)。 -## 用户绑定Workload Group +## 为用户设置Workload Group 在把用户绑定到某个Workload Group之前,需要先确定该用户是否具有某个 Workload Group 的权限。 可以使用这个用户查看 information_schema.workload_groups 系统表,返回的结果就是当前用户有权限使用的Workload Group。 下面的查询结果代表当前用户可以使用 g1 与 normal Workload Group: @@ -317,7 +317,7 @@ set bypass_workload_group = true; ``` ## 效果测试 -### 测试内存硬限 +### 内存硬限 Adhoc 类查询通常输入的 SQL 不确定,使用的内存资源也不确定,因此存在少数查询占用很大内存的风险。 可以对这类负载可以划分到独立的分组,通过 Workload Group 对内存的硬限的功能,避免突发性的大查询占满所有内存,导致其他查询没有可用内存或者 OOM。 当这个 Workload Group 的内存使用超过配置的硬限值时,会通过杀死查询的方式释放内存,避免进程内存被打满。 @@ -435,7 +435,7 @@ Adhoc 类查询通常输入的 SQL 不确定,使用的内存资源也不确定 -### CPU 硬限测试 +### CPU 硬限 Doris 的负载大体可以分为三类: 1. 核心报表查询,通常给公司高层查看报表使用,负载不一定很高,但是对可用性要求较高,这类查询可以划分到一个分组,配置较高优先级的软限,保证 CPU 资源不够时可以获得更多的 CPU 资源。 2. Adhoc 类查询,这类查询通常偏探索分析,SQL 比较随机,具体的资源用量也比较未知,优先级通常不高。因此可以使用 CPU 硬限进行管理,并配置较低的值,避免占用过多 CPU 资源降低集群可用性。 @@ -491,7 +491,7 @@ Workload Group 支持 CPU 的软限和硬限,目前比较推荐在线上环境 2. 目前 FE 向 BE 同步 Workload Group 元数据的时间间隔为 30 秒,因此对于 Workload Group 的变更最大需要等待 30 秒才能生效。 -### 测试本地 IO 硬限 +### 本地IO 硬限 OLAP 系统在做 ETL 或者大的 Adhoc 查询时,需要读取大量的数据,Doris 为了加速数据分析过程,内部会使用多线程并行的方式对多个磁盘文件扫描,会产生巨大的磁盘 IO,就会对其他的查询(比如报表分析)产生影响。 可以通过 Workload Group 对离线的 ETL 数据处理和在线的报表查询做分组,限制离线数据处理 IO 带宽的方式,降低它对在线报表分析的影响。 @@ -608,7 +608,7 @@ OLAP 系统在做 ETL 或者大的 Adhoc 查询时,需要读取大量的数据 2. 由于操作系统和 Doris 的 Page Cache 的存在,通过 linux 的 IO 监控脚本看到的 IO 通常要比系统表看到的要小。 -### 测试远程 IO 限制 +### 远程 IO 硬限 BrokerLoad 和 S3Load 是常用的大批量数据导入方式,用户可以把数据先上传到 HDFS 或者 S3,然后通过 Brokerload 和 S3Load 对数据进行并行导入。Doris 为了加快导入速度,会使用多线程并行的方式从 HDFS/S3 拉取数据,此时会对 HDFS/S3 产生巨大的压力,会导致 HDFS/S3 上运行的别的作业不稳定。 可以通过 Workload Group 远程 IO 的限制功能来限制导入过程中对 HDFS/S3 的带宽,降低对其他业务的影响。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-management-summary.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-management-summary.md index 08fab6f15fb..76e90f362da 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-management-summary.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/workload-management/workload-management-summary.md @@ -24,7 +24,7 @@ specific language governing permissions and limitations under the License. --> -负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。Doris 的负载管理具备以下功能: +负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。它具备以下功能: - 负载隔离: 通过划分多个Group,并且为每个Group都设置一定的资源(CPU, Memory, IO)限制,确保多个用户之间、同一用户不同的任务(读写操作)之间互不干扰; @@ -52,7 +52,7 @@ Doris 可以通过以下3种方式将资源分组: ## 软限与硬限 -- 硬限:硬限是指资源能够使用的绝对上线,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能; +- 硬限:硬限是指资源能够使用的绝对上限,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能; - 软限:软限是一个可以被超越的资源限制,通常表示资源推荐使用的上限。在系统不繁忙时,租户申请的资源超过了软限,可以借用其他资源组的资源。在系统繁忙存在资源争用时,租户申请资源超过了软限,将无法继续获得资源。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/kill-query.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/kill-query.md index 003ad954789..6b433e20dfc 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/kill-query.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/kill-query.md @@ -26,25 +26,27 @@ under the License. ## 获取查询列表 - 语法: - ```sql - SHOW PROCESSLIST; - ``` - 可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如: - - ```sql - SHOW PROCESSLIST; - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - | CurrentConnected | Id | User | Host | LoginTime | Catalog | Db | Command | Time | State | QueryId | Info | - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - | Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 | internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST | - | | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 | internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation | - | | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 | internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS | - | | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 | internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT DATABASE() | - | | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 | internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test | - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - 5 rows in set (0.00 sec) - ``` +语法: + +```sql +SHOW PROCESSLIST; +``` + +可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如: + +```sql +SHOW PROCESSLIST; ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +| CurrentConnected | Id | User | Host | LoginTime | Catalog | Db | Command | Time | State | QueryId | Info | ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +| Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 | internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST | +| | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 | internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation | +| | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 | internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS | +| | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 | internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT DATABASE() | +| | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 | internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test | ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +5 rows in set (0.00 sec) +``` - Id 是连接的唯一标识,也可以称为processlist_id; @@ -54,30 +56,34 @@ under the License. ## Kill 查询 - 语法: - - ```sql - KILL QUERY query_id | processlist_id - ``` - 用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如: - - ```sql - kill query 55; - Query OK, 0 rows affected (0.01 sec) - ``` - 表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。 - - ```sql - kill query 'f02603dc163a4da3-beebbb5d1ced760c'; - Query OK, 0 rows affected (0.01 sec) - ``` - 表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55 实际是同一个Query。 +语法: + +```sql +KILL QUERY query_id | processlist_id +``` + +用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如: + +```sql +kill query 55; +Query OK, 0 rows affected (0.01 sec) +``` + +表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。 + +```sql +kill query 'f02603dc163a4da3-beebbb5d1ced760c'; +Query OK, 0 rows affected (0.01 sec) +``` + +表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55 实际是同一个Query。 ## Kill 连接 - 语法: +语法: + +```sql +KILL CONNECTION processlist_id +``` - ```sql - KILL CONNECTION processlist_id - ``` - 表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。 \ No newline at end of file +表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。 \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/workload-management-summary.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/workload-management-summary.md index 19fd9a85b1c..c0a5e0ce15a 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/workload-management-summary.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/admin-manual/workload-management/workload-management-summary.md @@ -24,7 +24,7 @@ specific language governing permissions and limitations under the License. --> -负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。Doris 的负载管理具备以下功能: +负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。它具备以下功能: - 负载隔离: 通过划分多个Group,并且为每个Group都设置一定的资源(CPU, Memory, IO)限制,确保多个用户之间、同一用户不同的任务(读写操作)之间互不干扰; @@ -49,7 +49,7 @@ Doris 可以通过以下2种方式将资源分组: ## 软限与硬限 -- 硬限:硬限是指资源能够使用的绝对上线,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能; +- 硬限:硬限是指资源能够使用的绝对上限,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能; - 软限:软限是一个可以被超越的资源限制,通常表示资源推荐使用的上限。在系统不繁忙时,租户申请的资源超过了软限,可以借用其他资源组的资源。在系统繁忙存在资源争用时,租户申请资源超过了软限,将无法继续获得资源。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/compute-group.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/compute-group.md index f837e3d2f56..0a85fed5a49 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/compute-group.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/compute-group.md @@ -35,13 +35,6 @@ under the License. - 更灵活,在存算分离架构下,BE 本地的数据都是缓存,所以增加Compute Group 时不需要做笨重的数据迁移过程,新的Compute Group 只需在查询时缓存预热即可; - 隔离更彻底,数据的多副本存储由共享的存储层解决,所以任何Compute Group内的BE 宕机不会像Resource Group 那样导致导入失败。 - -本文档介绍如何使用计算组,其中涉及的操作包括: - -- 查看所有计算组 -- 计算组授权 -- 在用户级别绑定计算组 (`default_compute_group`) 以达到用户级别的隔离效果 - :::caution 注意 3.0.2 之前的版本中叫做计算集群(Compute Cluster)。 ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/kill-query.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/kill-query.md index 003ad954789..6b433e20dfc 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/kill-query.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/kill-query.md @@ -26,25 +26,27 @@ under the License. ## 获取查询列表 - 语法: - ```sql - SHOW PROCESSLIST; - ``` - 可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如: - - ```sql - SHOW PROCESSLIST; - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - | CurrentConnected | Id | User | Host | LoginTime | Catalog | Db | Command | Time | State | QueryId | Info | - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - | Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 | internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST | - | | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 | internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation | - | | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 | internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS | - | | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 | internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT DATABASE() | - | | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 | internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test | - +------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ - 5 rows in set (0.00 sec) - ``` +语法: + +```sql +SHOW PROCESSLIST; +``` + +可以显示当前FE 所有的连接,以及每个连接上正在运行的Query 的列表,例如: + +```sql +SHOW PROCESSLIST; ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +| CurrentConnected | Id | User | Host | LoginTime | Catalog | Db | Command | Time | State | QueryId | Info | ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +| Yes | 48 | root | 10.16.xx.xx:44834 | 2023-12-29 16:49:47 | internal | test | Query | 0 | OK | e6e4ce9567b04859-8eeab8d6b5513e38 | SHOW PROCESSLIST | +| | 50 | root | 192.168.xx.xx:52837 | 2023-12-29 16:51:34 | internal | | Sleep | 1837 | EOF | deaf13c52b3b4a3b-b25e8254b50ff8cb | SELECT @@session.transaction_isolation | +| | 51 | root | 192.168.xx.xx:52843 | 2023-12-29 16:51:35 | internal | | Sleep | 907 | EOF | 437f219addc0404f-9befe7f6acf9a700 | /* ApplicationName=DBeaver Ultimate 23.1.3 - Metadata */ SHOW STATUS | +| | 55 | root | 192.168.xx.xx:55533 | 2023-12-29 17:09:32 | internal | test | Sleep | 271 | EOF | f02603dc163a4da3-beebbb5d1ced760c | /* ApplicationName=DBeaver Ultimate 23.1.3 - SQLEditor <Console> */ SELECT DATABASE() | +| | 47 | root | 10.16.xx.xx:35678 | 2023-12-29 16:21:56 | internal | test | Sleep | 3528 | EOF | f4944c543dc34a99-b0d0f3986c8f1c98 | select * from test | ++------------------+------+------+--------------------+---------------------+----------+---------+---------+------+-------+-----------------------------------+---------------------------------------------------------------------------------------+ +5 rows in set (0.00 sec) +``` - Id 是连接的唯一标识,也可以称为processlist_id; @@ -54,30 +56,34 @@ under the License. ## Kill 查询 - 语法: - - ```sql - KILL QUERY query_id | processlist_id - ``` - 用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如: - - ```sql - kill query 55; - Query OK, 0 rows affected (0.01 sec) - ``` - 表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。 - - ```sql - kill query 'f02603dc163a4da3-beebbb5d1ced760c'; - Query OK, 0 rows affected (0.01 sec) - ``` - 表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55 实际是同一个Query。 +语法: + +```sql +KILL QUERY query_id | processlist_id +``` + +用于Kill 某一个指定的Query,或者某一个连接上正在运行的Query,例如: + +```sql +kill query 55; +Query OK, 0 rows affected (0.01 sec) +``` + +表示Kill 连接Id=55 上正在运行的Query,但是连接仍然有效。 + +```sql +kill query 'f02603dc163a4da3-beebbb5d1ced760c'; +Query OK, 0 rows affected (0.01 sec) +``` + +表示Kill QueryId=f02603dc163a4da3-beebbb5d1ced760c 的Query,与之前的processlist_id=55 实际是同一个Query。 ## Kill 连接 - 语法: +语法: + +```sql +KILL CONNECTION processlist_id +``` - ```sql - KILL CONNECTION processlist_id - ``` - 表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。 \ No newline at end of file +表示断开processlist_id标识的客户端与FE 之间的连接,正在执行的Query也会被Cancel。 \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/workload-management-summary.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/workload-management-summary.md index 983e2c590a7..76e90f362da 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/workload-management-summary.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/admin-manual/workload-management/workload-management-summary.md @@ -24,7 +24,7 @@ specific language governing permissions and limitations under the License. --> -负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。Doris 的负载管理具备以下功能: +负载管理是Doris一项非常重要的功能,在整个系统运行中起着非常重要的作用。通过合理的负载管理策略,可以优化资源使用,提高系统的稳定性,降低响应时间。它具备以下功能: - 负载隔离: 通过划分多个Group,并且为每个Group都设置一定的资源(CPU, Memory, IO)限制,确保多个用户之间、同一用户不同的任务(读写操作)之间互不干扰; @@ -34,7 +34,7 @@ under the License. ## 资源划分方式 -在 Doris 中,用户可以根据具体的业务需求,将系统资源划分为不同的Group,并确保各Group之间的资源相互独立,互不干扰。通过将用户绑定到不同的Group,可以实现对不同用户间的资源精细化管理与控制。在Group划分方面,Doris 提供了三种主要方式: +Doris 可以通过以下3种方式将资源分组: - Resource Group: 以 BE 节点为最小粒度,通过设置标签(tag)的方式,划分出多个资源组; @@ -52,7 +52,7 @@ under the License. ## 软限与硬限 -- 硬限:硬限是指资源能够使用的绝对上线,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能; +- 硬限:硬限是指资源能够使用的绝对上限,租户无法超越该限制。一旦达到硬限,超出部分的资源请求将会被拒绝。硬限一般用于防止集群内资源被耗尽或不同业务之间的资源抢占,确保集群的稳定与性能; - 软限:软限是一个可以被超越的资源限制,通常表示资源推荐使用的上限。在系统不繁忙时,租户申请的资源超过了软限,可以借用其他资源组的资源。在系统繁忙存在资源争用时,租户申请资源超过了软限,将无法继续获得资源。 --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org