We have been running a Windows ES cluster for some time. We decided that it seemed Linux often was considered faster in performance... So when we upgraded our cluster, we used Linux boxes.
A little background on the systems:
Both are running on the same Hyper-V infrastructure.
Both clusters are 20GB RAM 4vCPU boxes using the same shared storage.
Windows cluster was ES 2.1
Linux cluster is ES 2.3
When indexing on the Linux cluster, we notice our system monitors alerting because they go to nearly 0% free memory in some cases... this seems to become more frequent with each reindex (we reindex data a lot, multiple times per hour).
At the moment, the Linux cluster is in pre-production testing, no ongoing queries against it.
The Windows cluster however hovers (according to Task Manager) at about 13GB of 20GB used.
Why does ES on Linux seem to cause 100% memory utilization.
Further, we also notice in testing that the time taken reported in a query is longer for the Linux cluster (which currently has no load) than the Windows cluster (which is in production).
With multiple queries on the Windows cluster, the time taken will be between 1-10, whereas on the Linux cluster the time taken always reports between 13-45.
Note that we are using the same data for both tests and the same query... the only difference is the cluster. To get the lowest time results, we execute the same query in rapid succession. I expect a time of 1 is because the result is cached... shouldn't the same happen on the Linux cluster?
For Linux, we do have memlock on and confirmed working. We do have the heap set to 10GB (50% of total RAM).
Is there perhaps something I'm not properly tuning on Linux? I expected Linux to perform better than the Windows version.
Thanks!
Heath