[erlang-questions] Unexpected behavior of HTTPC module - tls_connection process take more memory

Ingela Andin <>
Tue Sep 8 10:01:57 CEST 2015


Hi!

It could be an bug that in the ssl application that I just fixed. The
default session cache
was violating the API, and this in turn made the mechanism for not
registering a lot of equivalent
sessions in the client fail.

 Here is the patch:


diff --git a/lib/ssl/src/ssl_session.erl b/lib/ssl/src/ssl_session.erl
index 1770faf..0d6cc93 100644
--- a/lib/ssl/src/ssl_session.erl
+++ b/lib/ssl/src/ssl_session.erl
@@ -100,14 +100,14 @@ select_session([], _, _) ->
     no_session;
 select_session(Sessions, #ssl_options{ciphers = Ciphers}, OwnCert) ->
     IsNotResumable =
- fun([_Id, Session]) ->
+ fun(Session) ->
  not (resumable(Session#session.is_resumable) andalso
      lists:member(Session#session.cipher_suite, Ciphers)
      andalso (OwnCert == Session#session.own_certificate))
  end,
     case lists:dropwhile(IsNotResumable, Sessions) of
  [] ->   no_session;
- [[Id, _]|_] -> Id
+ [Session | _] -> Session#session.session_id
     end.

 is_resumable(_, _, #ssl_options{reuse_sessions = false}, _, _, _, _) ->
diff --git a/lib/ssl/src/ssl_session_cache.erl
b/lib/ssl/src/ssl_session_cach
e.erl
index 11ed310..cfc48cd 100644
--- a/lib/ssl/src/ssl_session_cache.erl
+++ b/lib/ssl/src/ssl_session_cache.erl
@@ -83,7 +83,7 @@ foldl(Fun, Acc0, Cache) ->
 %%--------------------------------------------------------------------
 select_session(Cache, PartialKey) ->
     ets:select(Cache,
-       [{{{PartialKey,'$1'}, '$2'},[],['$$']}]).
+       [{{{PartialKey,'_'}, '$1'},[],['$1']}]).

 %%--------------------------------------------------------------------
 %%% Internal functions


Regards Ingela Erlang/OTP team - Ericsson AB


2015-09-07 5:52 GMT+02:00 Sanath Prasanna <>:

> Hi all,
>
> I am running HTTP client using httpc Module to send both http and https
> requests. normally sending arround 300 request per second without any
> issue. however sometimes erlang node become very slow responsive. at that
> time server load average is very high and using etop can identify
> "tls_connection" process take more memory. when restart the erlang node its
> become normal. as per my investigation normal time memory, processors,
> loadAverage is not increasing. following is the HTTP request config
>
>
>
> httpc:request(Method, Request, [{timeout, TimeoutTime}], [{sync, false}])
>
>
>
> below is the etop output at that time
>
>
>
>         procs    1134                        processes 1504844
> code         9309
>
>         runq        0                        atom          420
> ets         29692
>
>
>
> Pid            Name or Initial Func    Time    Reds  Memory    MsgQ
> Current Function
>
>
> ----------------------------------------------------------------------------------------
>
> <5490.26428.14>tls_connection:init/     '-'    733224580768       0
> gen_fsm:loop/7
>
> <5490.26429.14>tls_connection:init/     '-'   1328524580768       0
> gen_fsm:loop/7
>
> <5490.26430.14>tls_connection:init/     '-'    528924580768       0
> gen_fsm:loop/7
>
> <5490.26431.14>tls_connection:init/     '-'   1432224580768       0
> gen_fsm:loop/7
>
> <5490.26432.14>tls_connection:init/     '-'       024580768       0
> gen_fsm:loop/7
>
> <5490.26433.14>tls_connection:init/     '-'       024580768       0
> gen_fsm:loop/7
>
> <5490.26434.14>tls_connection:init/     '-'       024580768       0
> gen_fsm:loop/7
>
> <5490.26435.14>tls_connection:init/     '-'       024580768       0
> gen_fsm:loop/7
>
> <5490.26436.14>tls_connection:init/     '-'       024580768       0
> gen_fsm:loop/7
>
>
> can some one help me to solve this issue?
>
> Br,
>
> A.H.E. Robert
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150908/11ea1309/attachment.html>


More information about the erlang-questions mailing list