1

我在具有 8GB ram 的 aws 实例上使用带有 River 插件的 elasticsearch“1.4.2”。一周后一切正常,但一周后 River 插件 [plugin=org.xbib.elasticsearch.plugin.jdbc.river.JDBCRiverPlugin version=1.4.0.4] 停止工作我也无法对服务器进行 ssh 登录。服务器重新启动 ssh 登录后工作正常,当我检查弹性搜索的日志时,我发现了这个错误。

[2015-01-29 09:00:59,001][WARN ][river.jdbc.SimpleRiverFlow] no river mouth
[2015-01-29 09:00:59,001][ERROR][river.jdbc.RiverThread   ] java.lang.OutOfMemoryError: unable to create new native thread
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: unable to create new native thread

重新启动服务后,一切正常。但在一定的时间间隔后,同样的事情发生了。谁能告诉我可能是什么原因和解决方案。如果需要任何其他细节,请告诉我。

当我使用检查文件描述符的数量时

sudo ls /proc/1503/fd/ | wc -l

我可以看到它每次都在增加。它是 320,现在达到 360(不断增加)。和

sudo grep -E "^Max open files" /proc/1503/limits 

这显示 65535

处理器信息

vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping    : 4
microcode   : 0x415
cpu MHz     : 2500.096
cache size  : 25600 KB
siblings    : 8
cpu cores   : 4

记忆

MemTotal:       62916320 kB
MemFree:        57404812 kB
Buffers:          102952 kB
Cached:          3067564 kB
SwapCached:            0 kB
Active:          2472032 kB
Inactive:        2479576 kB
Active(anon):    1781216 kB
Inactive(anon):      528 kB
Active(file):     690816 kB
Inactive(file):  2479048 kB
4

2 回答 2

1

请执行下列操作

  1. 以 root 身份运行以下两个命令:

    ulimit -l 无限
    ulimit -n 64000

  2. 确保/etc/elasticsearch/elasticsearch.yml您取消注释或添加一行:

    bootstrap.mlockall:真

  3. /etc/default/elasticsearch取消注释该行(或添加一行),MAX_LOCKED_MEMORY=unlimited并将该行设置为ES_HEAP_SIZE合理的数字。确保它有足够高的内存量,不会让 elasticsearch 饿死,但它通常不应高于系统内存的一半,并且绝对不高于 ~30GB。我将它设置8g在我的数据节点上。

以一种或另一种方式,该过程显然缺乏资源。给你的系统足够的内存,并给 elasticsearch 一个很好的部分。

于 2015-03-03T23:33:00.227 回答
0

我认为您需要分析您的服务器日志。也许在:/var/log/message

于 2015-03-03T09:02:55.133 回答