The heap in use rises to about 10.84 gigs before dropping off. From what I understand this is a health pattern for this metric. It has 16 gigs and GC starts when the heap in use hits 75% (which would be 12).
So why are my searches still slow :(. When I search back 12 hours or more it churns and occasionally kibana times out (I currently have kibana set to 90 sec timeout).
I know this could also depend on my index itself, but I want to rule out any server config first because I like my index the way it is.
What other metrics should I investigate here? I can give them more memory but should I also allocate more to the heap or is that in a good place right now? From what I understand non-heap memory is used by lucene so that would improve search performance right?
I thought about doubling the thread pool size for indexing and also increasing it for indexing but elasticsearch docs say that is usually a No-No do you think it's permissible in my case?
I could give them more CPUs but not sure if that would improve query time. The es docs actually say elasticsearch is generally low CPU (relative to other resources) and recommend around 8 cores per node. I could give them 12 cores do you think that would help?
I do not see anything obviously wrong with it, but as you are using VMs I would recommend that you verify that Elasticsearch actually has access to the resources you have specified. memory ballooning or overallocation of CPU can have significant negative impact on performance.
Each query or aggregation runs single-threaded against each shard, so as you are querying a reasonably small number of shards you may not be able to use all your CPUs. If you are running some type of expensive queries or aggregations, e.g. wildcard queries, this could result in slow performance as the each single shard may take a while to process.
Cool thanks a lot for the tips! All the memory allocated to the VMs is reserved so fortunately issues related to dynamic allocation and ballooning can be ruled out.
As far as resource contention with CPUs- I don't see anything there, but I could dig into that further.
I said 5-10 shards, but really it would probably be double that because I wasn't thinking about replicas. So more like 10 to 20.
My shards are quite large but I have it configured for one per node which I believe is usually ideal. But as you say my shards are big and few in number.
Would breaking up my index into more shards help me get more out of my CPUs?
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.