[erlang-questions] Preventing memory crashes

Taavi Talvik taavi@REDACTED
Mon Nov 21 19:56:05 CET 2016


You can monitor processes memory usage, and get signal, when it
is over certain threshold with erlang:system_monitor/2 or 
just set limit and kill process with erlang:process_flag/2

Even set max heap size globally with erlang:system_flag/2 for
all newly spawned processes with max_heap_size

best regards,
taavi

> On 21 Nov 2016, at 20:29, Lyn Headley <lheadley@REDACTED> wrote:
> 
> Erlangers,
> 
> I am looking to write a process that makes sure my node does not run
> out of memory and crash. What I would like is a function F that
> returns a number that represents the amount of memory my node is
> using. If that number gets above a threshold T, I will kill a process
> (carefully and safely, possibly after dumping its ets table to disk).
> After the process exits, I would immediately call the same function F
> and see whether the number it returns is now less than my threshold T.
> If not, kill another process, etc.
> 
> Can I easily write this function F? Does the 'total' number from
> erlang:memory serve my needs here? In particular, will it go down
> immediately after I kill a process?
> 
> Given a carefully chosen value for threshold T, and assuming no atoms
> or binaries are being allocated, (heap data and ets tables are the
> main drivers of memory use), will this strategy indeed prevent my node
> from crashing as long as I kill processes faster than they can grow?
> 
> Other thoughts?
> 
> -Lyn
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

—
The single biggest problem in communication is the illusion that it has taken place. (George Bernard Shaw)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20161121/d37afc28/attachment.htm>


More information about the erlang-questions mailing list