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



我在一个8GB ram的aws实例上使用带有river插件的弹性搜索"1.4.2"。一周来一切都很好,但一周后,river插件[plugin=org.xbi.lasticsearch.plugin.jdbc.river.JDBCRiverPluginversion=1..4.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

执行以下

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

    ulimit-l无限制
    ulimit-n 64000

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

    bootstrap.lockall:真正的

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

在某种程度上,这个过程显然缺乏资源。给你的系统足够的内存,给弹性搜索一个很好的部分。

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

最新更新