我们正在为我们的企业设置ELK,一切都已设置好。 硬件/软件配置如下:
总RAM - 192G JDK = Java HotSpot(TM)64位服务器VM
注入数据文件我们正在使用Logstash filebeat插件并且索引已正确构建,并且在我们收到以下错误之前,事情似乎正常工作
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method) ~[?:1.8.0_144]
at java.lang.Thread.start(Thread.java:717) ~[?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:957) ~[?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java:1025) ~[?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) ~[?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_144]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
首先给人的印象是它可能是由-Xms
和-Xmx
设置引起的,我们将其更改为20g
但问题仍然存在。 Elasticsearch正常启动,重建索引然后......
基于几个主题 - 我们尝试了以下内容:
Xss
设置从1m
更改为228k
65536
但是,似乎没有任何效果。
答案 0 :(得分:1)
这与堆无关,正如错误消息所示,JVM无法创建本机操作系统线程。请确保通过ulimit
可以启动新流程。
另一方面,这也可能显示配置错误(即错误配置的线程池试图产生太多线程)。
答案 1 :(得分:0)
您可以尝试将Xmx增加到30GB。还要在elasticsearch jvm上启用JMX来检查堆上消耗的空间是多少。
想知道你有多少指数以及这些指数占据多少磁盘空间?
答案 2 :(得分:0)
我同意它与堆大小无关,因为20g对于任何体面的应用程序来说已经足够了,而且错误显示unable to create new native thread
通过更改“最大用户进程”来解决问题(截至目前)从1024
到65536