morningman commented on code in PR #614: URL: https://github.com/apache/doris-website/pull/614#discussion_r1595694417
########## i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/resource-admin/workload-policy.md: ########## @@ -0,0 +1,193 @@ +--- +{ +"title": "Workload Policy", +"language": "zh-CN" +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +## WORKLOAD POLICY + +### 功能背景 +Workload Group功能解决了不同负载间的隔离问题,但无法解决同一个Group内的大查询熔断的问题, 用户遇到大查询影响集群稳定性时只能手动处理。 + +因此Doris实现了Workload Policy的功能,支持查询负载管理的自动化,比如实现自动取消运行时间超过5s的查询这样的功能。 + +### 基础概念 +给出一个创建Workload Policy的语法 +``` +create workload policy test_cancel_policy +conditions(query_time > 1000) +actions(cancel_query) +properties('enabled'='true'); +``` +Workload Policy主要包含以下几个概念: +* policy,代表了用户定义的策略,包含触发策略的条件(conditions)和触发策略后的动作(actions)。 +* conditions,代表了策略的触发条件,比如当查询时间大于3s,就触发当前policy的action。一个policy可以有多个condition,多个condition之间是“与”的关系。 +* actions,当policy被触发时所采取的动作,比如可以取消查询,目前一个policy只能定义一个action(除了set_session_variable)。 +* properties,定义了当前policy的属性,包括是否启用和优先级。 + +上面例子中policy的含义是,创建一个名为test_cancel_policy的policy,它会取消掉集群中运行时间超过1s的查询,当前状态为启用。 Review Comment: ```suggestion 上面例子中policy的含义是,创建一个名为 `test_cancel_policy` 的policy,它会取消掉集群中运行时间超过1s的查询,当前状态为启用。 ``` 建议这种带下划线的单词或变量,用反引号包裹,不然可能被识别为 markdown 的斜体 ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/resource-admin/workload-policy.md: ########## @@ -0,0 +1,193 @@ +--- +{ +"title": "Workload Policy", +"language": "zh-CN" +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +## WORKLOAD POLICY + +### 功能背景 +Workload Group功能解决了不同负载间的隔离问题,但无法解决同一个Group内的大查询熔断的问题, 用户遇到大查询影响集群稳定性时只能手动处理。 + +因此Doris实现了Workload Policy的功能,支持查询负载管理的自动化,比如实现自动取消运行时间超过5s的查询这样的功能。 + +### 基础概念 +给出一个创建Workload Policy的语法 +``` +create workload policy test_cancel_policy +conditions(query_time > 1000) +actions(cancel_query) +properties('enabled'='true'); +``` +Workload Policy主要包含以下几个概念: +* policy,代表了用户定义的策略,包含触发策略的条件(conditions)和触发策略后的动作(actions)。 +* conditions,代表了策略的触发条件,比如当查询时间大于3s,就触发当前policy的action。一个policy可以有多个condition,多个condition之间是“与”的关系。 +* actions,当policy被触发时所采取的动作,比如可以取消查询,目前一个policy只能定义一个action(除了set_session_variable)。 +* properties,定义了当前policy的属性,包括是否启用和优先级。 + +上面例子中policy的含义是,创建一个名为test_cancel_policy的policy,它会取消掉集群中运行时间超过1s的查询,当前状态为启用。 + +### 基本用法 +由于action的行为有的只能在FE生效,有的只能在BE生效,因此policy本身也有FE和BE的区别。 + +#### 适用于FE的policy +1. Condition +* username,当一个查询的username为某个值时,就会触发相应的action +2. Action +* set_session_variable,这个action可以执行一条set session variable的语句。同一个policy可以有多个set_session_variable,也就是说一个policy可以执行多个修改session变量的语句。 + +适用于FE的policy主要是用于修改某个user的session变量,目前不支持set global的用法。 + +#### 适用于BE的policy +1. Condition +* be_scan_rows,一个sql在单个BE进程内scan的行数,如果有多个并发那就是多个并发的累加值。 +* be_scan_bytes,一个sql在单个BE进程内scan的字节数,如果有多个并发那么就是多个并发的累加值。 +* query_time,一个sql在单个BE进程上的运行时间,时间单位是毫秒。 + +2. Action +* cancel_query,取消查询。 + +目前BE的policy主要是用于BE负载的管理,比如当某个query的scan数据量过大或者查询时间过长,就取消这个query。 + +#### 属性 +* enabled,取值为true或false,默认值为true,表示当前policy处于启用状态,false表示当前policy处于禁用状态。 +* priority,取值范围为0到100的正整数,默认值为0,代表policy的优先级,该值越大,优先级越高。这个属性的主要作用是,当匹配到多个policy时,选择优先级最高的policy。 +* workload_group,目前一个policy可以绑定一个workload group,代表这个policy只对某个workload group生效。默认为空,代表对所有查询生效。 + +#### 注意事项 +* 同一个policy的condition和action要么都是FE的,要么都是BE的,比如set_session_variable和cancel_query无法配置到同一个policy中。condition be_scan_rows和condition username无法配置到同一个policy中。 + +* 由于目前的policy是异步线程以固定时间间隔执行的,因此策略的生效存在一定的滞后性。比如用户配置了scan行数大于100万就取消查询的策略,如果此时集群资源比较空闲,那么有可能在取消策略生效之前查询就已经结束了。目前这个时间间隔为500ms,这意味着运行时间过短的查询可能会绕过策略的检查。 + +* 当前支持的负载类型包括select/insert select/stream load/broker load/routine load。 + +* 一个查询可能匹配到多个policy,但是只有优先级最高的policy会生效。 + +* 目前不支持action和condition的修改,只能通过删除新建的方式修改。 + +### 常见用法 +1 将用户名为admin的所有session变量中的workload group修改为normal Review Comment: 为啥不使用 `1. ` 这样的序号? 同时,记得缩进 ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/resource-admin/workload-policy.md: ########## @@ -0,0 +1,193 @@ +--- +{ +"title": "Workload Policy", +"language": "zh-CN" +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +## WORKLOAD POLICY Review Comment: 这里直接开始 `## 功能背景` 不需要单独的二级标题了,把 `### 功能背景` 提到二级标题 ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/resource-admin/workload-policy.md: ########## @@ -0,0 +1,193 @@ +--- +{ +"title": "Workload Policy", +"language": "zh-CN" +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +## WORKLOAD POLICY + +### 功能背景 +Workload Group功能解决了不同负载间的隔离问题,但无法解决同一个Group内的大查询熔断的问题, 用户遇到大查询影响集群稳定性时只能手动处理。 + +因此Doris实现了Workload Policy的功能,支持查询负载管理的自动化,比如实现自动取消运行时间超过5s的查询这样的功能。 + +### 基础概念 +给出一个创建Workload Policy的语法 +``` +create workload policy test_cancel_policy +conditions(query_time > 1000) +actions(cancel_query) +properties('enabled'='true'); +``` +Workload Policy主要包含以下几个概念: +* policy,代表了用户定义的策略,包含触发策略的条件(conditions)和触发策略后的动作(actions)。 +* conditions,代表了策略的触发条件,比如当查询时间大于3s,就触发当前policy的action。一个policy可以有多个condition,多个condition之间是“与”的关系。 +* actions,当policy被触发时所采取的动作,比如可以取消查询,目前一个policy只能定义一个action(除了set_session_variable)。 +* properties,定义了当前policy的属性,包括是否启用和优先级。 + +上面例子中policy的含义是,创建一个名为test_cancel_policy的policy,它会取消掉集群中运行时间超过1s的查询,当前状态为启用。 + +### 基本用法 +由于action的行为有的只能在FE生效,有的只能在BE生效,因此policy本身也有FE和BE的区别。 + +#### 适用于FE的policy +1. Condition +* username,当一个查询的username为某个值时,就会触发相应的action +2. Action +* set_session_variable,这个action可以执行一条set session variable的语句。同一个policy可以有多个set_session_variable,也就是说一个policy可以执行多个修改session变量的语句。 + +适用于FE的policy主要是用于修改某个user的session变量,目前不支持set global的用法。 + +#### 适用于BE的policy +1. Condition +* be_scan_rows,一个sql在单个BE进程内scan的行数,如果有多个并发那就是多个并发的累加值。 Review Comment: 缩进 ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/resource-admin/workload-policy.md: ########## @@ -0,0 +1,193 @@ +--- +{ +"title": "Workload Policy", +"language": "zh-CN" +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +## WORKLOAD POLICY + +### 功能背景 +Workload Group功能解决了不同负载间的隔离问题,但无法解决同一个Group内的大查询熔断的问题, 用户遇到大查询影响集群稳定性时只能手动处理。 + +因此Doris实现了Workload Policy的功能,支持查询负载管理的自动化,比如实现自动取消运行时间超过5s的查询这样的功能。 + +### 基础概念 +给出一个创建Workload Policy的语法 +``` +create workload policy test_cancel_policy +conditions(query_time > 1000) +actions(cancel_query) +properties('enabled'='true'); +``` +Workload Policy主要包含以下几个概念: +* policy,代表了用户定义的策略,包含触发策略的条件(conditions)和触发策略后的动作(actions)。 +* conditions,代表了策略的触发条件,比如当查询时间大于3s,就触发当前policy的action。一个policy可以有多个condition,多个condition之间是“与”的关系。 +* actions,当policy被触发时所采取的动作,比如可以取消查询,目前一个policy只能定义一个action(除了set_session_variable)。 +* properties,定义了当前policy的属性,包括是否启用和优先级。 + +上面例子中policy的含义是,创建一个名为test_cancel_policy的policy,它会取消掉集群中运行时间超过1s的查询,当前状态为启用。 + +### 基本用法 +由于action的行为有的只能在FE生效,有的只能在BE生效,因此policy本身也有FE和BE的区别。 + +#### 适用于FE的policy +1. Condition +* username,当一个查询的username为某个值时,就会触发相应的action Review Comment: ```suggestion * username,当一个查询的username为某个值时,就会触发相应的action ``` 在 `1. ` 序号后的内容,缩进一级。下同 ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/resource-admin/workload-policy.md: ########## @@ -0,0 +1,193 @@ +--- +{ +"title": "Workload Policy", +"language": "zh-CN" +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +## WORKLOAD POLICY + +### 功能背景 +Workload Group功能解决了不同负载间的隔离问题,但无法解决同一个Group内的大查询熔断的问题, 用户遇到大查询影响集群稳定性时只能手动处理。 + +因此Doris实现了Workload Policy的功能,支持查询负载管理的自动化,比如实现自动取消运行时间超过5s的查询这样的功能。 + +### 基础概念 +给出一个创建Workload Policy的语法 +``` +create workload policy test_cancel_policy +conditions(query_time > 1000) +actions(cancel_query) +properties('enabled'='true'); +``` +Workload Policy主要包含以下几个概念: +* policy,代表了用户定义的策略,包含触发策略的条件(conditions)和触发策略后的动作(actions)。 +* conditions,代表了策略的触发条件,比如当查询时间大于3s,就触发当前policy的action。一个policy可以有多个condition,多个condition之间是“与”的关系。 +* actions,当policy被触发时所采取的动作,比如可以取消查询,目前一个policy只能定义一个action(除了set_session_variable)。 +* properties,定义了当前policy的属性,包括是否启用和优先级。 + +上面例子中policy的含义是,创建一个名为test_cancel_policy的policy,它会取消掉集群中运行时间超过1s的查询,当前状态为启用。 Review Comment: 其他地方同 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@doris.apache.org For additional commands, e-mail: dev-h...@doris.apache.org