文章目录
简介
- 简介
- 二、启动流程
- 2.1、启动流程做了什么
- 2.2、启动流程分析
- 2.2.1、启动脚本
- 2.2.2、解析命令行参数和配置文件
- 2.2.3、加载安全配置
- 2.2.4、检查内部环境
- 2.2.5、检测外部环境
- 1、堆大小检查
- 2、文件描述符检查
- 3、内存锁定检查
- 4、最大线程数检查
- 5、最大虚拟内存检查
- 6、最大文件大小检查
- 7、虚拟内存区域最大数量检查
- 8、JVM Client模式检查
- 9、串行收集检查
- 10、系统调用过滤器检查
- 11、OnError与OnOutOfMemoryError检查
- 12、Early-access检查
- 13、G1GC检查
- 2.2.5、启动内部模块
- 2.2.5、启动keepalive线程
- 三、节点关闭
- 3.1、节点关闭流程
- 3.2、关闭流程分析
- 3.3、分片读写过程中执行关闭
- 3.4、主节点被关闭
- 四、小结
- 关注我的公众号【宝哥大数据】,更多干货。。。
本章分析单个节点的启动和关闭流程。看看进程是如何解析配置、检查环境、初始化内部模块的,以及在节点被“kill”的时候是如何处理的。
二、启动流程 2.1、启动流程做了什么总体来说,节点启动流程的任务是做下面几类工作:
- 解析配置,包括配置文件和命令行参数。
- 检查外部环境和内部环境,例如,JVM版本、操作系统内核参数等。
- 初始化内部资源,创建内部模块,初始化探测器。
- 启动各个子模块和keepalive线程。
当我们通过启动脚本 bin/elasticsearch
启动 ES 时,脚本通过exec加载Java程序。代码如下:
exec \ #执行命令
"$JAVA" \ #Java 程序路径
$ES JAVA OPTS \ #JVM 选项
-Des . path. home="$ES_ HOME" \ #设置path. home路径
-Des. path.conf="$ES_ PATH_ CONF" \ #设置path.conf路径
-cp "$ES_ CLASSPATH" \ #设置java classpath
org. elasticsearch. bootstrap.Elasticsearch \ #指定main函数所在类
"$@" #传递给main函数命令行参数
ES_JAVA_OPTS
变量保存了JVM参数,其内容来自对config/jvm.options配置文件的解析。 如果执行启动脚本时添加了-d参数:
bin/elasticsearch -d
则启动脚本会在exec中添加
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?