原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/stopping-elasticsearch.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/stopping-elasticsearch.html

停止Elasticsearch

Elasticsearch 的有序关闭确保了 Elasticsearch 有机会清理和关闭未完成的资源。 例如,一个有序关闭的节点将从集群中删除自己,将事务日志同步到磁盘,并执行其他相关的清理活动。 你可以通过适当停止 Elasticsearch 来帮助确保有序地关闭。

如果你将 Elasticsearch 作为服务运行,则可以通过安装的程序提供的服务管理功能停止 Elasticsearch。

如果是直接运行的 Elasticsearch,可以通过发送 control-C (如果是在控制台中运行 Elasticsearch) 或 通过向 POSIX 系统上的 Elasticsearch 进程发送 SIGTERM 来停止 Elasticsearch。 可以通过各种工具获得发送信号的 PID(比如 psjps):

$ jps | grep Elasticsearch
14542 Elasticsearch

或者,从 Elasticsearch 的启动日志:

[2016-07-07 12:26:18,908][INFO ][node                     ] [I8hydUG] version[5.0.0-alpha4], pid[15399], build[3f5b994/2016-06-27T16:23:46.861Z], OS[Mac OS X/10.11.5/x86_64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_92/25.92-b14]

或者,在启动时指定一个位置来写入 PID 文件 (-p <path>):

$ ./bin/elasticsearch -p /tmp/elasticsearch-pid -d
$ cat /tmp/elasticsearch-pid && echo
15516
$ kill -SIGTERM 15516

因致命错误而停止 (Stopping on Fatal Errors)

在 Elasticsearch 虚拟机的生命周期中,可能会出现某些致命错误,使虚拟机处于可疑状态。 此类致命错误包括内存不足错误、虚拟机内部错误和严重的I/O错误。

当 Elasticsearch 检测到虚拟机遇到这种致命错误时,它将尝试记录该错误,然后挂起虚拟机。 当 Elasticsearch 开始执行这种关闭时,它不会像上面描述的那样有序关闭。 Elasticsearch 进程还会返回一个特殊的状态代码,表明错误的类型。

JVM internal error

128

Out of memory error

127

Stack overflow error

126

Unknown virtual machine error

125

Serious I/O error

124

Unknown fatal error

1