Our elasticsearch processes have been slowly consuming memory until a kernel
OOM kills it. Details are here:
https://github.com/elastic/elasticsearch/issues/26269
<https://github.com/elastic/elasticsearch/issues/26269>
To summarize:
- Explicit GC is enabled
- MaxDirectMemorySize is set
- Total memory usage for the process is roughly heap (30G) + mmap'd (unbounded)
+ 1-2G (meta space, threads, etc)
The crowd is suggesting "Don't worry. You want to use all that memory." I
understand that sentiment except for:
- The process eventually gets OOM killed.
- I need to support multiple processes on same machine and need a more
predictable footprint.
It seems to be relatively common knowledge that direct byte buffers require a
GC to trigger their freedom. However, full GC's are happening but not
resulting in a reduction of resident mmap'd memory.
Any pointers to source code, settings, or tools are much appreciated. Thanks!
--
Erik