ES进程除了kill之外,有什么优雅关闭的方式吗?

这篇具有很好参考价值的文章主要介绍了ES进程除了kill之外,有什么优雅关闭的方式吗?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

Linux环境中,Elasticsearch 8的进程除了kill之外,有什么优雅关闭的方式吗?
elasticsearch关闭,elasticsearch,jenkins,大数据,linux,restful

具体实施方式

在Linux环境中,Elasticsearch(ES)进程可以通过多种方式实现优雅关闭,这种方式允许它完成必要的清理工作,如保存未写入磁盘的数据、关闭索引等,而不是直接强制终止。对于Elasticsearch 8.x版本,可以采用以下几种方式进行优雅关闭:

1. 通过Elasticsearch API:

发送HTTP请求到本地节点关闭整个集群:

curl -X POST "localhost:9200/_cluster/nodes/_local/_shutdown"

如果你知道特定节点的ID,也可以只关闭那个节点:

curl -X POST "localhost:9200/_cluster/nodes/node_id/_shutdown"

这个在ES 8实测结果:无法使用!

2. 通过Elasticsearch命令行工具:

使用Elasticsearch提供的elasticsearch-cli工具(从7.x版本开始引入)进行关闭:

elasticsearch-cli --request POST "/_cluster/nodes/_local/_shutdown"

ES 8中这个工具存在,但是执行也是报错。

3. 通过系统信号:

向Elasticsearch进程发送适当的信号也能触发优雅关闭。找到Elasticsearch进程的PID,然后发送SIGTERM信号:

kill -SIGTERM <es_pid>

Elasticsearch进程在接收到SIGTERM信号后,会按照设计的流程执行优雅关闭。

实际测试该方式是ok的。

4. 使用Systemd服务管理器(如果你的系统使用Systemd启动Elasticsearch服务):

sudo systemctl stop elasticsearch.service

Systemd通常会确保服务按照正确的方式来停止,包括执行服务定义中的“pre-stop”脚本,这对于像Elasticsearch这样的服务来说意味着执行一个有序的关闭。

这个方式也是ok的。

小结

在大型集群中,尤其是在生产环境中,建议通过API或服务管理器进行关闭,以便确保集群状态一致性和数据完整性。同时,Elasticsearch在接收到关闭信号后,也会尽量保证正在执行的操作得到妥善处理和回滚,避免数据丢失或损坏。

附录

kill的SIGTERM参数

当你在Linux或其他类Unix系统中操作时,kill命令是用来向一个进程发送特定信号的工具。SIGTERM信号就是这些信号之一,你可以将其理解为一种温和的通知方式,告诉某个进程:“嘿,程序,现在是时候结束了,请尽可能干净利落地完成手头的工作,并自行退出。”

具体来说,当你执行kill -15 <进程ID>(这里的15代表SIGTERM信号)时,操作系统会向指定的进程发送一个“终止请求”。对于遵守规则的程序,这意味着它们应该开始清理资源,保存状态,关闭打开的文件和网络连接等,并最终结束自身运行。这是一个尊重程序内部逻辑的优雅关机过程,给予程序机会去正确地完成收尾工作,防止数据丢失或者其他副作用。

然而,并非所有进程都会立即响应SIGTERM信号,有的进程可能没有实现对SIGTERM信号的处理,或者在接到信号后仍需一定时间才能完全终止。如果一个进程在接收到SIGTERM后未能及时结束,那么管理员可能会考虑发送更为强硬的SIGKILL信号(信号编号为9),这种信号无法被忽略或捕获,一旦发出,进程将会立即被内核强制终止。

Systemd服务管理

Linux上的Systemd服务管理是一种现代的系统和服务初始化系统,替代了早期Linux发行版中常用的SysVinit和Upstart等传统服务管理工具。Systemd的设计旨在提高系统的启动速度,简化服务管理,以及增强系统的整体可管理性和可靠性。以下是Systemd服务管理的主要特点和优势:

  1. 统一管理:Systemd将各种系统资源(如服务、定时任务、sockets、设备等)都抽象为统一的“单元”(units),包括.service(服务单元)、.target(目标单元)、.socket(套接字单元)、.device(设备单元)、.mount(挂载单元)等不同类型的单元文件,便于集中管理和维护。

  2. 并行启动:Systemd通过对服务间的依赖关系进行智能分析,允许系统服务并行启动,大大缩短了系统启动时间和服务响应时间。

  3. 动态管理:Systemd支持服务的动态管理,可以实时监控服务状态、重启失败的服务、按需启动服务(例如当监听的socket有连接请求时自动启动服务)等。

  4. 目标(targets)概念:Systemd引入了目标的概念,类似于运行级别,但更加灵活。例如,multi-user.target对应于传统意义上的多用户文本模式,graphical.target则是图形界面模式,不同的目标包含了启动时需要激活的一系列服务。

  5. Journal日志系统:Systemd自带的日志管理系统journalctl,能够收集、索引和过滤系统的所有日志,这为故障排查提供了便利。

  6. Systemctl工具:通过systemctl命令行工具,用户可以轻松地启动、停止、重启服务,查询服务状态,以及进行更复杂的服务管理操作。

  7. 跨平台兼容性:Systemd设计之初就考虑到了多种架构和操作系统环境,提供了统一的服务管理接口,增强了Linux生态系统的协同性和一致性。文章来源地址https://www.toymoban.com/news/detail-850697.html

到了这里,关于ES进程除了kill之外,有什么优雅关闭的方式吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【工具】VS Code Counter|除了Gitstats之外的Github一键统计代码行数工具

    需求: 1)被要求统计代码行数; 2)不想打开Linux,懒得下载Windows版本GitStats; 3)打开了Linux但也不记得find命令行怎么用; 4)打开了Linux,装好了Gitstats但自己没有图形化界面所以无法打开其输出结果; 5)习惯用VScode编程。 其他工具: 1)Linux愿意使用Gitstats的请直接转到

    2024年01月20日
    浏览(46)
  • Wordpress网站开发问题解决——除了主页之外的所有页面都是“找不到页面内容”(修复记录)

    最近 阿里云老是提醒我边缘计算机控制升级 我自己建立了一个网站,用的就是阿里云的万网服务器 所以 我去看看 结果跟我没什么关系 本以为就这么愉快地结束了 没想到 我建立的网站就只能打开主页 其他页面都是 “找不到页面内容” 空白页面 糟糕 我不是专业的网站开发

    2024年01月24日
    浏览(51)
  • linux 如何查看es进程,Linux---关闭Elasticsearch进程,并重新启动

    查看ES进程: 执行命令:ps -ef | grep elasticsearch 如果有elasticsearch进程,则会返回包含elasticsearch的进程信息,如下所示: 如果没有elasticsearch进程,则不会返回任何信息。 关闭ES进程: 执行命令:sudo systemctl stop elasticsearch 等待一段时间,直到ES进程完全停止。 重新启动

    2024年02月11日
    浏览(47)
  • 除了运行、休眠…进程居然还有僵尸、孤儿状态

    摘要: 本章我们将认识几种进程状态——运行状态、休眠状态、暂停状态、退出状态等。还要介绍两种具有惨烈身世的僵尸进程与孤儿进程~ 本文分享自华为云社区《僵尸进程?孤儿进程?为什么他有如此惨烈的身世...》,作者: 花想云 。 Linux中进程状态一般有: R(运行状

    2024年02月06日
    浏览(43)
  • linux下kill某个用户所有进程

    参考:linux下4种kill某个用户所有进程的方法_lihuaichen的博客-CSDN博客_linux杀死所有python         使用: top 或者 ps 查看当前用户的运行进程;         使用  kill pid方式可以 杀死某个想杀死的进程; 那么想kill掉所有进程的方法:(4种)         pkill方式:      

    2024年02月11日
    浏览(44)
  • linux杀死进程(kill -9的使用)

    信号是Linux中非常重要的部分。 信号机制是进程间相互传递消息的一种方法,全称为软中断信号。信号可以看作进程控制的一部分。 基本概念 signal用来通知进程发生了异步事件,进程之间可以互相通过系统调用kill发送软中断信号。但是注意,信号只是用来通知某进程发生了

    2024年02月04日
    浏览(39)
  • shell脚本查询进程, 存在则kill掉

    这是一个在 shell 脚本中查询进程并结束该进程的示例: 这段代码首先使用 ps -ef 查询系统中所有正在运行的进程,然后使用 grep 命令筛选出名为 \\\"process_name\\\" 的进程。最后,使用 awk 命令获取该进程的进程号(PID),并将其存储在变量 process 中。 然后,使用 if 语句判断变量 pro

    2024年02月12日
    浏览(137)
  • 技术分享 | kill掉mysqld_safe进程会影响mysqld进程?

    公司内部看到一则问题 1、kill -9 mysqld_safe 进程 2、systemd 检测到 mysqld_safe 进程不存在后,重新拉起 mysqld_safe 进程 3、mysqld_safe 进程启动后,发现 mysqld 进程也被重启 期望:启、停 mysqld_safe 进程,不会影响 mysqld 进程 1)、查看数据库服务状态 2)、 kill -9 mysqld_safe 进程,并再次查

    2024年02月13日
    浏览(39)
  • linux杀死进程的五种方法(kill)

    添加链接描述 相关博主的链接; 方法一:通过kill 进程id的方式可以实现 首先需要知道进程id, 例如,想要杀死firefox的进程,通过 ps -ef|grep firefox,可以查到firefox的进程id: 然后通过 kill 3781 就可以关闭进程了. 补充: kill -9 来强制终止退出, 例如: kill -9 3781 特殊用法: kill -STOP [pid

    2024年02月02日
    浏览(42)
  • Linux如何杀死kill -9杀不掉的进程

    在Linux中,我们经常使用kill或者kill -9来杀死特定的进程,但是有些时候,这些方法可能无法终止某些进程。本文将详细解释为什么会出现这种情况,以及如何处理这种问题。 首先,我们来理解一下为什么有些进程无法被杀死。通常,这是因为这些进程处于以下两种状态之一

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包