[erlang-questions] How to see which processes used ets table?
Attila Rajmund Nohl
Thu Feb 7 11:52:10 CET 2013
2013/2/7 Björn-Egil Dahlberg <wallentin.dahlberg@REDACTED>:
> Not this again.
> This idea is not an uninteresting one. A safeguard against bad flow control
> in application design.
I try to recall the last few out of memory situations I saw:
- the system makes a CORBA call, but the remote site goes down without
any warning at an inappropriate time (there were no non-ACKd TCP
segments out there, then we didn't even get an ICMP error or RST
answer) and by the time the OS noticed that the connection went down,
the queue of a gen_server got too big. The solution was not not block
the gen_server when the CORBA call blocks - this is a kind of flow
- there was a programming error, some developer failed to delete the
old entries from the ets database when those entries should have been
deleted, then ets grew too big
- there was a programming error, the client didn't expect the "." and
the ".." directory in the filelisting, so the client happily changed
into these directories over and over until the path grew too big
I think killing the too big process could have saved the whole VM and
the application in general, but of course, the crash dump was very
useful in all cases.
More information about the erlang-questions