Hi,
So I keep having a problem where once I start doing stuff on Kibana elasticsearch crashes and goes Red. That's my real issue but I am wondering how elasticsearch should be configured using a single node as I haven't really found any documentation on the subject. I've seen stuff about multiple nodes, data/master, many shards etc, but I'm totally unclear on what my setup should be for a single (beefy) node.
I've got a server with 24 cores and 256 GB ram. I really don't think things should be crashing as the system isn't anywhere near these limits. I've configured Elasticsearch with a 30GB heap and Logstash with a 12GB heap. I haven't changed the Kibana heap size but I don't think kibana is the problem?
I'm on 6.0.1, and I've got x-pack installed as I am trying to monitor performance and tune appropriately. My logstash config has 24 workers and a 250 batch size.
I'm hoping I'm just missing something and I'm thinking that it might be number of shards? Not sure what the recommended practice is for a single node.
This thread seems to suggest that there should be 1 shard for single node: How change the number of shards and replicas in Elasticsearch
But this one seems to suggest there should be many shards for single node: Kibana crashes Elasticsearch
I haven't changed the shard settings at all from defaults.
What direction should I go?
I think my elasticsearch log is just filled with xpack warnings and errors (at least before I just tried to restart using systemd):
[2018-03-23T10:52:59,627][ERROR][o.e.x.w.e.ExecutionService] [79_mMrx] failed to update watch record [y5CXg5PLRyqRmunOdim9iA_xpack_license_expiration_df577cd9-0e47-488f-aa4f-cdbabdca629b-2018-03-23T16:42:36.426Z]
org.elasticsearch.ElasticsearchTimeoutException: java.util.concurrent.TimeoutException: Timeout waiting for task.
at org.elasticsearch.action.support.AdapterActionFuture.actionGet(AdapterActionFuture.java:68) ~[elasticsearch-6.0.1.jar:6.0.1]
at org.elasticsearch.xpack.watcher.history.HistoryStore.put(HistoryStore.java:100) ~[x-pack-6.0.1.jar:6.0.1]
at org.elasticsearch.xpack.watcher.execution.ExecutionService.execute(ExecutionService.java:333) ~[x-pack-6.0.1.jar:6.0.1]
at org.elasticsearch.xpack.watcher.execution.ExecutionService.lambda$executeAsync$7(ExecutionService.java:416) ~[x-pack-6.0.1.jar:6.0.1]
at org.elasticsearch.xpack.watcher.execution.ExecutionService$WatchExecutionTask.run(ExecutionService.java:568) [x-pack-6.0.1.jar:6.0.1]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569) [elasticsearch-6.0.1.jar:6.0.1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_151]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
Caused by: java.util.concurrent.TimeoutException: Timeout waiting for task.
at org.elasticsearch.common.util.concurrent.BaseFuture$Sync.get(BaseFuture.java:235) ~[elasticsearch-6.0.1.jar:6.0.1]
at org.elasticsearch.common.util.concurrent.BaseFuture.get(BaseFuture.java:69) ~[elasticsearch-6.0.1.jar:6.0.1]
at org.elasticsearch.action.support.AdapterActionFuture.actionGet(AdapterActionFuture.java:66) ~[elasticsearch-6.0.1.jar:6.0.1]
... 8 more
[2018-03-23T10:52:59,658][WARN ][o.e.m.j.JvmGcMonitorService] [79_mMrx] [gc][old][230532][47] duration [1.2m], collections [1]/[1.2m], total [1.2m]/[41.7m], memory [29.8gb]->[29.8gb]/[29.8gb], all_pools {[young] [1.1gb]->[1.1gb]/[1.1gb]}{[survivor] [102.1mb]->[108.9mb]/[149.7mb]}{[old] [28.5gb]->[28.5gb]/[28.5gb]}
Thanks!
Dave