Elasticsearch中任务管理怎么做?

一个ES集群研发在清理数据时使用了delete_by_query,导致集群性能严重受影响,影响了正常的业务。为了快速恢复集群正常状态,考虑把还在进行的delete_by_query任务清除掉。

先查看当前集群的任务

GET _cat/tasks?v

在这里插入图片描述

发现delete_by_query的任务300多个,而且有的任务已经执行了20多分钟。 (当时图没截下来有点可惜)

确定要取消这些任务,因为比较紧,一着急反而采用了一个比较笨也比较慢的方法:

通过grep过滤出delete_by_query的任务,并获取taskid列表

curl  localhost:9200/_cat/tasks?v | grep 'delete/byquery'  | awk '{print $2}'   > tasks.txt

根据获取的id列表,调api取消任务

for i in `cat tasks.txt`
do
	  curl localhost:9200/_tasks/$i/_cancel
done

然后再查看task列表,发现所有delete_by_query的任务都被取消掉了。

上面这个过程哪里消耗时间了?

1. 需要找到一个可以执行Shell 命令的机器,并且还能连到该ES集群,往往维护的集群与维护者本地网络是不通的,而ES提供的kibana又不能执行shell命令。这里可能会消耗一些时间。
1. 脚本需要现写,而且特别容易出错

综上,感觉ES本身不可能没有考虑到类似的批量取消功能,又返回去查了官方文档。于是上述过程可以优化成下面的过程:

查看要取消任务类型或关键字过滤任务:

GET  _cat/tasks?v

从返回数据中提取要取消任务Action列的关键字

批量取消,根据action关键字

POST _tasks/_cancel?actions=*byquery

这一条命令等同第一种方法中的shell脚本实现的内容,且可以直接在kibana执行,不需要shell环境。唯一欠缺可能就是无法根据id精准操作指定的任务。在关键字匹配范围内的任务都会被取消,使用的关键字一定要准确。

最后,遇到问题不确定是否有更好的解决方法,可以去看官方文档,可以解决90%的问题。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 05:58:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 05:58:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 05:58:02       58 阅读
  4. Python语言-面向对象

    2024-07-18 05:58:02       69 阅读

热门阅读

  1. Apache Omid TSO 组件源码实现原理

    2024-07-18 05:58:02       21 阅读
  2. php 方法追踪其被调用的踪迹

    2024-07-18 05:58:02       20 阅读
  3. 山东航空小程序查询

    2024-07-18 05:58:02       23 阅读
  4. 怎么查看占用端口的 PID

    2024-07-18 05:58:02       20 阅读
  5. 算法1.快速幂【a^b、(a^b)%p】

    2024-07-18 05:58:02       22 阅读
  6. 第三节SHELL脚本中的变量与运算(2.2)

    2024-07-18 05:58:02       20 阅读
  7. nng协议nni_posix_resolv_sysinit()系统初始化

    2024-07-18 05:58:02       22 阅读
  8. Tensor列表索引本质

    2024-07-18 05:58:02       20 阅读
  9. 社会科学战线

    2024-07-18 05:58:02       22 阅读
  10. 资源管理大师:如何在Gradle中配置资源目录

    2024-07-18 05:58:02       25 阅读
  11. derivate_gauss 将图像与高斯函数的导数卷积

    2024-07-18 05:58:02       22 阅读
  12. 掌握Xcode Storyboard:iOS UI设计的可视化之旅

    2024-07-18 05:58:02       22 阅读