16

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

有时,服务会在运行好几天后消失(我预计它会崩溃)。例如:

# curl -XGET http://localhost:9200/
curl: (7) couldn't connect to host

根据这个 ElasticSearch page,我希望我的日志可以在/var/log/elasticsearch......但是......

# ls /var/data/elasticsearch
ls: /var/data/elasticsearch: No such file or directory

我没有/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)

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

我还查看了我的内存图

在此处输入图像描述

我们可以看到在 ES 死亡之前有一个奇怪的峰值。我试图在这里找到源头。唯一的其他进程应该是节点;它们的上限分别为 4Gb 和 1.2Gb(如您所见,一旦 ES 死亡并且只剩下节点,RAM 就会下降到 1.2Gb)。因此,要么 ElasticSearch 超过了 4Gb,要么其他原因导致内存激增......

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

4

2 回答 2

34

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

curl -s "localhost:9200/_nodes/_local/settings?pretty=true" | fgrep path.logs

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

elasticsearch突然消失的第二个可能原因是oom-killer。当系统内存不足时,它会启动并杀死最大的进程(在您的情况下为 elasticsearch)。检查 syslog 和 kern.log 大约在 elasticsearch 上次消失的时间。如果您看到这样的消息

Out of memory: Kill process 1234 (java) score 567 or sacrifice child

您可能需要减少 elasticsearch 堆大小以将更多内存留给操作系统或升级到更大的实例。

于 2013-03-05T04:12:03.950 回答
1

我遇到了同样的麻烦:

  • 更新的 JAVA 没有帮助
  • 从 openJDK 迁移到 oracle 没有任何改变
  • 内存消耗终于OK了
  • 任何地方都没有错误消息,只是 JVM 随机崩溃

我的解决方案是删除 sigar lib :

cd    
sudo mv /usr/share/elasticsearch/lib/sigar .
sudo service elasticsearch restart

既然,一切都很顺利,唯一的影响是:我失去了 CPU 监控。ElasticSearch 1.5.1 在带有 Ubuntu 14.04 (OpenVZ) 的 VPS 上运行。

更新 1:我仍然需要使用 elasticsearch 1.5.2 删除 sigar lib

更新 2:要弄清楚,在启动 elasticsearch 时添加这些选项:

-XX:HeapDumpPath=./java_pid.hprof

堆转储的目录或文件名的路径。可管理。

-XX:-HeapDumpOnOutOfMemoryError

抛出 java.lang.OutOfMemoryError 时将堆转储到文件。

将有助于调试

于 2015-04-19T18:43:30.240 回答