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

Sanath Prasanna ahe.sanath@REDACTED
Thu Sep 17 20:05:34 CEST 2015


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 <ahe.sanath@REDACTED>
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 <ahe.sanath@REDACTED>
> 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 <ingela.andin@REDACTED>
>> 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 <ahe.sanath@REDACTED>:
>>>
>>>> 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
>>>> erlang-questions@REDACTED
>>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150917/98a917ca/attachment.htm>


More information about the erlang-questions mailing list