ES进程除了kill之外,有什么优雅关闭的方式吗?
问题
Linux环境中,Elasticsearch 8的进程除了kill之外,有什么优雅关闭的方式吗?

具体实施方式
在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服务管理的主要特点和优势:
-
统一管理:Systemd将各种系统资源(如服务、定时任务、sockets、设备等)都抽象为统一的“单元”(units),包括.service(服务单元)、.target(目标单元)、.socket(套接字单元)、.device(设备单元)、.mount(挂载单元)等不同类型的单元文件,便于集中管理和维护。
-
并行启动:Systemd通过对服务间的依赖关系进行智能分析,允许系统服务并行启动,大大缩短了系统启动时间和服务响应时间。
-
动态管理:Systemd支持服务的动态管理,可以实时监控服务状态、重启失败的服务、按需启动服务(例如当监听的socket有连接请求时自动启动服务)等。
-
目标(targets)概念:Systemd引入了目标的概念,类似于运行级别,但更加灵活。例如,multi-user.target对应于传统意义上的多用户文本模式,graphical.target则是图形界面模式,不同的目标包含了启动时需要激活的一系列服务。
-
Journal日志系统:Systemd自带的日志管理系统journalctl,能够收集、索引和过滤系统的所有日志,这为故障排查提供了便利。
-
Systemctl工具:通过systemctl命令行工具,用户可以轻松地启动、停止、重启服务,查询服务状态,以及进行更复杂的服务管理操作。
-
跨平台兼容性:Systemd设计之初就考虑到了多种架构和操作系统环境,提供了统一的服务管理接口,增强了Linux生态系统的协同性和一致性。
相关文章:
ES进程除了kill之外,有什么优雅关闭的方式吗?
问题 Linux环境中,Elasticsearch 8的进程除了kill之外,有什么优雅关闭的方式吗? 具体实施方式 在Linux环境中,Elasticsearch(ES)进程可以通过多种方式实现优雅关闭,这种方式允许它完成必要的…...
院子摄像头的监控
院子摄像头的监控和禁止区域入侵检测相比,多了2个功能:1)如果检测到有人入侵,则把截图保存起来,2)如果检测到有人入侵,则向数据库插入一条事件数据。 打开checkingfence.py,添加如下…...
SpringBoot3使用响应Result类返回的响应状态码为406
Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation] 解决方法:Result类上加上Data注解...
基础:TCP四次挥手做了什么,为什么要挥手?
1. TCP 四次挥手在做些什么 1. 第一次挥手 : 1)挥手作用:主机1发送指令告诉主机2,我没有数据发送给你了。 2)数据处理:主机1(可以是客户端,也可以是服务端),…...
Android Studio实现内容丰富的安卓校园二手交易平台(带聊天功能)
获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号083 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看二手商品列表 3.发布二手商品 4.商品详情 5.聊天功能…...
第十一届蓝桥杯省赛第一场真题
2065. 整除序列 - AcWing题库 #include <bits/stdc.h> using namespace std; #define int long long//记得开long long void solve(){int n;cin>>n;while(n){cout<<n<< ;n/2;} } signed main(){int t1;while(t--)solve();return 0; } 2066. 解码 - …...
设计模式 模板方法模式
01.如果接到一个任务,要求设计不同型号的悍马车 02.设计一个悍马车的抽象类(模具,车模) public abstract class HummerModel {/** 首先,这个模型要能够被发动起来,别管是手摇发动,还是电力发动…...
【STM32嵌入式系统设计与开发】——6矩阵按键应用(4x4)
这里写目录标题 一、任务描述二、任务实施1、SingleKey工程文件夹创建2、函数编辑(1)主函数编辑(2)LED IO初始化函数(LED_Init())(3)开发板矩阵键盘IO初始化(ExpKeyBordInit())&…...
乐优商城(九)数据同步RabbitMQ
1. 项目问题分析 现在项目中有三个独立的微服务: 商品微服务:原始数据保存在 MySQL 中,从 MySQL 中增删改查商品数据。搜索微服务:原始数据保存在 ES 的索引库中,从 ES 中查询商品数据。商品详情微服务:做…...
XSS-labs详解
xss-labs下载地址https://github.com/do0dl3/xss-labs 进入靶场点击图片,开始我们的XSS之旅! Less-1 查看源码 代码从 URL 的 GET 参数中取得 "name" 的值,然后输出一个居中的标题,内容是 "欢迎用户" 后面…...
设计模式——模板方法模式封装.net Core读取不同类型的文件
1、模板方法模式 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 特点:通过把不变的行为搬移到超类,去除子类中重复的代…...
[思考记录]技术欠账
最近对某开发项目做回顾梳理,除了进一步思考整理相关概念和问题外,一个重要的任务就是清理“技术欠账”。 这个“技术欠账”是指在这个项目的初期,会有意无意偏向快速实现,想先做出来、用起来,进而在实现过程中做出…...
React - 实现菜单栏滚动
简介 本文将会基于react实现滚动菜单栏功能。 技术实现 实现效果 点击菜单,内容区域会自动滚动到对应卡片。内容区域滑动,指定菜单栏会被选中。 ScrollMenu.js import {useRef, useState} from "react"; import ./ScrollMenu.css;export co…...
线性筛选(欧拉筛选)-洛谷P3383
#include <bits/stdc.h> using namespace std; int main() {std::ios::sync_with_stdio(false); cin.tie(nullptr); //为了加速int n, q;cin >> n >> q; vector<int>num(n 1); //定义数字表vector<int>prime; //定义素数表数组num[1] …...
企业微信可以更换公司主体吗?
企业微信变更主体有什么作用?当我们的企业因为各种原因需要注销或已经注销,或者运营变更等情况,企业微信无法继续使用原主体继续使用时,可以申请企业主体变更,变更为新的主体。企业微信变更主体的条件有哪些࿱…...
Qt教程 — 3.6 深入了解Qt 控件:Display Widgets部件(2)
目录 1 Display Widgets简介 2 如何使用Display Widgets部件 2.1 QTextBrowser组件-简单的文本浏览器 2.2 QGraphicsView组件-简单的图像浏览器 Display Widgets将分为两篇文章介绍 文章1(Qt教程 — 3.5 深入了解Qt 控件:Display Widgets部件-CSDN…...
Golang案例开发之gopacket抓包三次握手四次分手(3)
文章目录 前言一、理论知识三次握手四次分手二、代码实践1.模拟客户端和服务器端2.三次握手代码3.四次分手代码验证代码完整代码总结前言 TCP通讯的三次握手和四次分手,有很多文章都在介绍了,当我们了解了gopacket这个工具的时候,我们当然是用代码实践一下,我们的理论。本…...
如何减少pdf的文件大小?pdf压缩工具介绍
文件发不出去,有时就会耽误工作进度,文件太大无法发送,这应该是大家在发送PDF时,常常会碰到的问题吧,那么PDF文档压缩大小怎么做呢?因此我们需要对pdf压缩后再发送,那么有没有好用的pdf压缩工具…...
TypeScript基础类型
string、number、bolean 直接在变量后面添加即可。 let myName: string Tomfunction sayHello(person: string) {return hello, person } let user Tom let array [1, 2, 3] console.log(sayHello(user))function greet(person: string, date: Date): string {console.lo…...
长安链智能合约标准协议第二草案——BNS与DID协议邀请社区用户评审
长安链智能合约标准协议 在智能合约编写过程中,不同的产品及开发人员对业务理解和编程习惯不同,即使同一业务所编写的合约在具体实现上也可能有很大差异,在运维或业务对接中面临较大的学习和理解成本,现有公链合约协议规范又不能完…...
算术运算符(i++与++i)
i与i在独立使用时结果一致;作为表达式使用时:j 8(1)k j 等于 j j1,再k j 。先自增,再赋值 ,j9,k9(2) k j 等于 k j,再j j1 。先赋值&#…...
二次元创作神器体验:沉浸式漫画分镜界面,快速产出火影同人作品
二次元创作神器体验:沉浸式漫画分镜界面,快速产出火影同人作品 1. 创作工具概览 「忍者绘卷:通灵之术」是一款专为二次元创作者设计的AI绘画工具,基于Tongyi-MAI Z-Image Turbo模型深度优化。这款工具最大的特色是采用了创新的漫…...
如何永久保存微信聊天记录?这个免费工具让你轻松备份和分析所有对话![特殊字符]
如何永久保存微信聊天记录?这个免费工具让你轻松备份和分析所有对话!🚀 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https:…...
嵌入式工程师成长之路(1)——元件基础(完整版)
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万+阅读 1.6万+收藏 文章目录 前言 一、认识元件 ①、认识元件 ②、认识封装 二、电阻 1.上拉电阻与下拉电阻 ①、定义 ②、应用 ③、阻值选择 ④、因上下拉电阻引发的问题 ⑤、因一颗上拉电阻引发的思考 2.高精密采…...
如何将Sublime Text打造成Python开发利器:Anaconda插件终极指南
如何将Sublime Text打造成Python开发利器:Anaconda插件终极指南 【免费下载链接】anaconda Anaconda turns your Sublime Text 3 in a full featured Python development IDE including autocompletion, code linting, IDE features, autopep8 formating, McCabe co…...
数据库安全与运维管控(一):MySQL、PG与Oracle原生审计机制对比
在满足等保2.0、SOC2 或金融合规审查时,“开启数据库审计”是硬性指标。合规要求企业必须记录“谁、在什么时间、执行了什么SQL、结果如何”。面对这个需求,开发和运维通常首先想到的是利用数据库引擎自带的原生审计功能。但在海量并发(高 QP…...
代码审计 | Log4j2 —— CVE-2021-44228 JNDI 注入与递归解析的完整链路分析
代码审计 | Log4j2 —— CVE-2021-44228 JNDI 注入与递归解析的完整链路分析 目录 环境搭建 漏洞复现 编写测试代码 构造恶意 class 文件 启动 LDAP 转发器 请求流程 使用 JNDI 工具一键利用 代码审计 payload 入口追踪 MessagePatternConverter:关键转折点 substitu…...
STM32时钟系统解析与启动配置实践
1. STM32单片机启动时的时钟源选择机制刚接触STM32开发时,我总有个疑问:在main函数执行前,单片机是怎么跑起来的?特别是在我们还没配置系统时钟之前,CPU靠什么时钟在工作?这个问题困扰了我很久,…...
2026互联网大厂AI招聘趋势:高薪岗位解析,普通人如何抓住AI时代红利?
2026年互联网大厂招聘,AI岗已成绝对主角,百度AI岗占比超90%,阿里超6成,腾讯、字节等AI相关岗位占比也达6-7成,AI不再是“可选项”,而是“必答题”。以下是核心岗位、薪资与优势的精炼解读,帮你快…...
OpenClaw隐私计算:Qwen3.5-9B-AWQ-4bit本地处理加密图片
OpenClaw隐私计算:Qwen3.5-9B-AWQ-4bit本地处理加密图片 1. 为什么需要加密图片处理 去年我在帮一家小型金融机构做自动化流程优化时,遇到了一个棘手问题:他们需要AI自动分析客户上传的身份证和银行卡照片,但直接传输这些敏感图…...
