Hello there. Setup that i have:
Cluster of 3 nodes with ES 5.3.0.
All nodes are VMs in KVM hypervisor, with no more highloaded VMs on local hypervisors.
VMs:
Ubuntu 16.04 linux-4.4.0 kernel (different minor builds), JVM: OpenJDK 64-Bit 1.8.0_131+ (different minor builds).
16 vCPU, 32Gb RAM, 0 swap, 1Tb disk space.
Hardware:
Per hypervisor 2 Intel Xeon E5 v3, Samsung SSDs, other doesn't matter AFAIK.
Cluster setup:
3 nodes, JVM heap 16Gb, x-pack installed, JMX enabled, ES config:
cluster.name: elk
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts:
- somenodes
network.bind_host: "0.0.0.0"
network.host: "0.0.0.0"
node.name: es[1,2,3]-elk
path.data: /usr/share/elasticsearch/data/elk
path.logs: /var/log/elasticsearch/elk
transport.tcp.port: 9300
xpack.security.enabled: false
indices.memory.index_buffer_size: "15%"
All index templates has settings:
"index" : {
"number_of_shards" : 3,
"refresh_interval" : "5s"
}
I have 426 shards, but highload persisted with <150 shards.
I have all indices of daily, 3 primary, 1 replica shards options:
1 type - 20m docs, 50Gb each with replica size, last 10 days
2 type - 70m docs, 180Gb each with replica size, last 4 days
others - 200..200k docs, < 600Mb each (these are x-pack too)
Gist with cluster info:
The issue: 3rd node has loadavg 20-25 compared to others 1-5 loadavg.
Thing that i've found weird:
-
A lot of merges on overloaded node with high time spent
-
GC on loaded node spends a lot of time to itself. It's also seen in stats. Log:
[2017-11-23T17:31:05,680][WARN ][o.e.m.j.JvmGcMonitorService] [es3-elk] [gc][young][17563][4993] duration [1.4s], collections [1]/[2.1s], total [1.4s]/[2h], memory [4.6gb]->[3.9gb]/[15.6gb], all_pools {[young] [772.7mb]->[496.6kb]/[865.3mb]}{[survivor] [100.1mb]->[108.1mb]/[108.1mb]}{[old] [3.8gb]->[3.8gb]/[14.6gb]}
-
There's way more network traffic and IOPS on overloaded node. So probably this is not hardware issue.
es1:
DISK READ DISK WRITE SWAPIN IO> COMMAND
0.00 B 9.21 G 0.00 % 33.99 % [jbd2/sda1-8]
279.98 G 1923.02 G 0.00 % 0.02 % java
es2:
DISK READ DISK WRITE SWAPIN IO> COMMAND
0.00 B 10.31 G 0.00 % 32.72 % [jbd2/sda1-8]
247.90 G 1933.95 G 0.00 % 0.02 % java
es3:
DISK READ DISK WRITE SWAPIN IO> COMMAND
0.00 B 305.05 G 0.00 % 39.17 % [jbd2/sda1-8]
385.80 G 2.61 T 0.00 % 0.10 % java
It looks like most of the data routed to 3rd, overloaded node, but documents count in every shard is pretty the same.
Questions: Does anyone know why one node is overloaded? What can cause a lot of load except of just documents indexing maybe?
p.s.: i've found advice to use Oracle Java, but still did not tried it yet.