我在一个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
执行以下
-
以root用户身份运行以下两个命令:
ulimit-l无限制
ulimit-n 64000 -
在
/etc/elasticsearch/elasticsearch.yml
中,请确保取消注释或添加一行内容:bootstrap.lockall:真正的
-
在
/etc/default/elasticsearch
中,取消注释表示MAX_LOCKED_MEMORY=unlimited
的行(或添加一行),并将ES_HEAP_SIZE
行设置为合理的数字。确保它的内存量足够高,不会使弹性搜索挨饿,但它通常不应高于系统内存的一半,绝对不应高于~30GB。我在数据节点上将其设置为8g
。
在某种程度上,这个过程显然缺乏资源。给你的系统足够的内存,给弹性搜索一个很好的部分。
我认为您需要分析服务器日志。可能在:/var/log/message