[erlang-questions] error_logger heap overflow

Bogdan Andu <>
Tue Nov 20 10:47:40 CET 2012


Hello,

I have a concurent server that handles ssl conections. I saw that if there are aprox. 20 parallel connections to the server running for about 1 day, the virtual machine dies with the following message:

Slogan: eheap_alloc: Cannot allocate 2850821240 bytes of memory (of type "heap").
System version: Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]

......

I have two questions:


1)
Process Information


Pid
Name/Spawned as
State
Reductions
Stack+heap  
MsgQ Length
<0.5.0> error_logger Garbing
(limited info) 129146284187 356352655 323792
 

356352655*8 = 2850821240, exactly the value from "Cannot allocate 2850821240 bytes of memory" message.

The error_logger process accumulates a high number of pending messages in the message queue, resulting in heap exhaustion.

The amount and size of the log messages sent to error_logger are normal normal.

How can I make error_logger to process messages faster and to avoid heap overflow error.


2)
Another question is this:

I observed that the ets table ssl_otp_session_cache get large although the client is the same:

=ets:<0.70.0>
Slot: 23
Table: 28695
Name: ssl_otp_session_cache
Buckets: 6224 
Objects: 41912
Words: 2058733

(2058733*8)/(1024*1024) =~ 15 MBytes 

Altough I know the cache entries expire after 24 hours how can I decrease this timeout to 1 hour, for example?

Or how can I disable the ssl caching altogether?

Thank you,

Bogdan



More information about the erlang-questions mailing list