我们刚刚对服务器进行了滚动重启,但现在每隔几个小时我们的集群就会停止响应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。
答案 0 :(得分:3)
这可能是由于操作系统不允许创建更多线程。增加每个进程的线程数可以解决问题。将ulimit -u
值设置得更高。
虽然上述情况很好,但更好的解决办法是configure ElasticSearch使用线程池。这是一个更好的解决方案,因为线程创建和销毁是昂贵的。事实上,除了在完整的GC期间,一些(或所有?)JVM不能清除终止的线程。