elasticsearch JDBC -RIVER java.lang.OutOfMemoryError:无法创建新的本机线程

时间:2015-02-17 06:41:43

标签: elasticsearch elasticsearch-jdbc-river

我正在使用带有8GB内存的aws实例上的河流插件的elasticsearch“1.4.2”。一周工作正常但是一周之后河流插件[plugin = org.xbib.elasticsearch.plugin.jdbc。 river.JDBCRiverPlugin 版本= 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

2 个答案:

答案 0 :(得分:1)

执行以下操作

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

    ulimit -l unlimited
    ulimit -n 64000

  2. /etc/elasticsearch/elasticsearch.yml中,请确保取消注释或添加一行说明:

    bootstrap.mlockall:true

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

  4. 在某种程度上,这个过程显然缺乏资源。为您的系统提供充足的内存,并为弹性搜索提供很好的帮助。

答案 1 :(得分:0)

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