We have a server that runs various headless applications, such as Java. It processes to stream data, daily python scripts, etc. From time to time some of our applications get out of memory errors
.
The problem we have is the monitoring shows there is plenty of ram. We upped it from 128GB to 192GB and it hasn't solved the problem. Our monitoring takes a reading every 20 seconds and shows minimum available memory of 132GB over the last 2 days. But we had some applications fail with out of memory errors this morning. Is it possible to get OOM with plenty of ram available?
EDIT: Answer to questions from David
- yes the 192GB is just the ram allocated to OS. It is a VM
- The monitoring will read free/available ram for the OS, we don't have any per process monitoring
- Most java processes don't specify memory requirements on the CLI (eg Xmx etc)
- The exception is "Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread"
I would add, multiple processes fail at the same time. To me this would indicate it's not an issue with the process itself but something to do with the system. Some of the apps that fail just do the same thing all day every day, which is to process a fairly consistent stream of data. It's not like they could be flooded with a large number of requests.