ElasticSearch消失/崩溃 - 无法找到日志文件或任何其他信息

Zan*_*aes 16 amazon-ec2 elasticsearch

我在我的EC2服务器上运行ElasticSearch.我无法理解ElasticSearch的日志/调试.

有时候,服务在运行好几天后会消失(我希望它会崩溃).例如:

# curl -XGET http://localhost:9200/
curl: (7) couldn't connect to host
Run Code Online (Sandbox Code Playgroud)

根据这个ElasticSearch页面,我预计我的日志将可用于/var/log/elasticsearch...但是......

# ls /var/data/elasticsearch
ls: /var/data/elasticsearch: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我没有/config/logging.yml以任何方式更改文件.ElasticSearch以root身份运行,因此权限应该没有问题.

我错过了什么?


根据imotov的回复,我发现了我的日志文件/root/elasticsearch/elasticsearch-0.20.5/logs......但正如他预测的那样,它们非常无益.

我检查了我的Java版本:

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
Run Code Online (Sandbox Code Playgroud)

看起来这是一个非常古老的版本,我正在努力升级它.

我也看了一下我的记忆图

在此输入图像描述

我们可以看到在ES死亡之前有一个奇怪的尖峰.我想在这里发现消息来源.唯一的其他过程应该是节点; 它们的上限分别为4Gb和1.2Gb(一旦ES死亡,只剩下节点,RAM就会下降到1.2Gb,你可以看到).所以要么ElasticSearch超过它的4Gb,要么其他东西导致内存飙升......

FWIW,我正在使用m1.large实例(8GB RAM).

imo*_*tov 32

如果运行相对较新版本的elasticsearch,则应该能够通过运行以下命令来查找日志文件的位置

curl -s "localhost:9200/_nodes/_local/settings?pretty=true" | fgrep path.logs
Run Code Online (Sandbox Code Playgroud)

但是,如果elasticsearch突然消失,那么你很可能在这些日志中找不到任何东西.如果您运行的是旧版本的java(一年或更长时间),那么您的java进程很可能会崩溃.当它发生时,JVM通常会留下硬盘上命名的文件hs_err_pidXXXX.log (通常在/tmp/Linux上.看看你是否可以找到任何文件,并尝试将Java升级到最新版本.

弹性研究突然消失的第二个可能原因是杀手锏.当系统内存不足时,这是一个启动并杀死最大进程(在您的情况下为elasticsearch)的进程.检查系统日志和kern.log在上次时间弹性搜索消失的时间.如果你看到这样的消息

Out of memory: Kill process 1234 (java) score 567 or sacrifice child
Run Code Online (Sandbox Code Playgroud)

您可能需要减少elasticsearch堆大小,以便为操作系统留出更多内存或升级到更大的实例.