Hi All,
Its been sometime i have been playing with memory settings.
My ultimate aim is simple - Use as much of main memory. At least move the
index alone (without _source) to main memory if enough space is not present.
My experiments goes as follows.
I went tru this page -
http://www.elasticsearch.org/guide/reference/index-modules/store.html
Experiment 1
I found that there is a memory store , so i tried starting with following
settings in elasticsearch.yml
store.type : memory
cache.memory.small_buffer_size: 1mb
cache.memory.large_buffer_size: 10mb
cache.memory.small_cache_size: 1000mb
cache.memory.large_cache_size: 2000mb
Result - With the above setting nothing happened to an existing
index.More worse , nothing happened to new index created after setting the
above configuration.
*Experiment 2
*I made the default gateway as none with the settings specified in
Experiment 1.
*Result *- Here main memory was fully used but then on restart , i lost the
enitre data. And its clear that when main memory runs out something bad is
going to happen.
Experiment 3
Then i found a silver bullet , it was this setting -
store.fs.memory.enabled : true
Result With this settings and the settings mentioned in Experiment 1, on
creation of new node , main memory is heavily used and i am able to
maintain data between restarts.
*Experiment 4
*One node is having default settings and am opening a new node. here first
node is a low end machine and cant space any RAM. I was thinking of
applying search query on the new node and inserts on the old node. As
node-2 is highly using main memory , search queries should be executed
quite fast. This was my plan.
So node-1 have default settings and node-2 have settings specified in
Experiment-3.
Result I started node-2 with the same cluster name as node-1 but instead
of taking the memory settings from its own config file , node-2 picked
store and cache settings from node-1.
Finally coming to the doubt sections
- What does buffer and cache settings signify in the configuration
mentioned in Experiment-1 ? - What is the difference between small and large cache or buffer
settings ? Is it same as minimum and maximum allotted memory ? - What exactly happens when i enable this setting -
*store.fs.memory.enabled
. *Also this setting being important in not mentioned in
elasticsearch.yml file - In a cluster is it possible for a node to have a different memory
settings that the other node. If the machines in the cluster are not alike
, it would be hard to fully use the capacity of high end machines then. - Is there any other memory settings that i missed out which can help me
better use main memory and improve search query performance ?
Thanks
Vineeth
--