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

Ingela Andin <>
Fri Sep 18 10:06:03 CEST 2015


Hi!

As we are very busy with the release 18.1 I have not had time to try and
recreate your problem. What version of OTP  and the ssl application are you
using?
Can you reproduce the problem with the latest on github?

Regards Ingela Erlang/OTP Team - Ericsson AB


On Thu, Sep 17, 2015 at 8:05 PM, Sanath Prasanna <>
wrote:

> Hi Ingela,
> Any update on this??
> "Even apply your patch, *still problem is persist.* Any
> more suggestions to solve this unexpected behavior ? "
> Br,
> Robert
>
> On Thu, Sep 17, 2015 at 12:39 PM, Sanath Prasanna <>
> wrote:
>
>> Hi Ingela,
>> Even apply your patch, *still problem is persist.* Any
>> more suggestions to solve this unexpected behavior ?
>> Br,
>> Robert
>>
>> On Tue, Sep 8, 2015 at 1:52 PM, Sanath Prasanna <>
>> wrote:
>>
>>> Hi Ingela.
>>> Tx a lot for your help & patch related to that.I'll inform you the
>>> result after applying &  testing patch.
>>> Br,
>>> Robert
>>>
>>> On Tue, Sep 8, 2015 at 1:31 PM, Ingela Andin <>
>>> wrote:
>>>
>>>> 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/20150918/fab92a6a/attachment.html>


More information about the erlang-questions mailing list