ElasticSearch抛出" OutOfMemoryError [无法创建新的本机线程]"

时间:2015-01-30 14:52:25

标签: java elasticsearch

我们刚刚对服务器进行了滚动重启,但现在每隔几个小时我们的集群就会停止响应API调用。相反,当我们打电话时,我得到这样的回复:

curl -XGET 'http://localhost:9200/_cluster/health?pretty'
{
  "error" : "OutOfMemoryError[unable to create new native thread]",
  "status" : 500
}

我注意到我们仍然可以将数据索引很好,但似乎无法搜索或调用任何API函数。这似乎每隔几个小时发生一次,并且最近发生的时间,任何节点的日志文件中都没有日志。

我们的群集是5个服务器上的8个节点(3个服务器运行2个ElasticSearch进程,2个运行1个),运行RHEL6u5。我们正在运行ElasticSearch1.3.4。

1 个答案:

答案 0 :(得分:3)

这可能是由于操作系统不允许创建更多线程。增加每个进程的线程数可以解决问题。将ulimit -u值设置得更高。

虽然上述情况很好,但更好的解决办法是configure ElasticSearch使用线程池。这是一个更好的解决方案,因为线程创建和销毁是昂贵的。事实上,除了在完整的GC期间,一些(或所有?)JVM不能清除终止的线程。