<div dir="ltr">Hi!<div><br></div><div>It could be an bug that in the ssl application that I just fixed. The default session cache</div><div>was violating the API, and this in turn made the mechanism for not registering a lot of equivalent</div><div>sessions in the client fail.</div><div><br></div><div> Here is the patch:</div><div><br></div><div><br></div><div><div>diff --git a/lib/ssl/src/ssl_session.erl b/lib/ssl/src/ssl_session.erl</div><div>index 1770faf..0d6cc93 100644</div><div>--- a/lib/ssl/src/ssl_session.erl</div><div>+++ b/lib/ssl/src/ssl_session.erl</div><div>@@ -100,14 +100,14 @@ select_session([], _, _) -></div><div> no_session;</div><div> select_session(Sessions, #ssl_options{ciphers = Ciphers}, OwnCert) -></div><div> IsNotResumable =</div><div>-<span class="" style="white-space:pre"> </span>fun([_Id, Session]) -></div><div>+<span class="" style="white-space:pre"> </span>fun(Session) -></div><div> <span class="" style="white-space:pre"> </span>not (resumable(Session#session.is_resumable) andalso</div><div> <span class="" style="white-space:pre"> </span> lists:member(Session#session.cipher_suite, Ciphers)</div><div> <span class="" style="white-space:pre"> </span> andalso (OwnCert == Session#session.own_certificate))</div><div> <span class="" style="white-space:pre"> </span>end,</div><div> case lists:dropwhile(IsNotResumable, Sessions) of</div><div> <span class="" style="white-space:pre"> </span>[] -> no_session;</div><div>-<span class="" style="white-space:pre"> </span>[[Id, _]|_] -> Id</div><div>+<span class="" style="white-space:pre"> </span>[Session | _] -> Session#session.session_id</div><div> end.</div><div> </div><div> is_resumable(_, _, #ssl_options{reuse_sessions = false}, _, _, _, _) -></div><div>diff --git a/lib/ssl/src/ssl_session_cache.erl b/lib/ssl/src/ssl_session_cach</div><div>e.erl</div><div>index 11ed310..cfc48cd 100644</div><div>--- a/lib/ssl/src/ssl_session_cache.erl</div><div>+++ b/lib/ssl/src/ssl_session_cache.erl</div><div>@@ -83,7 +83,7 @@ foldl(Fun, Acc0, Cache) -></div><div> %%--------------------------------------------------------------------</div><div> select_session(Cache, PartialKey) -> </div><div> ets:select(Cache, </div><div>-<span class="" style="white-space:pre"> </span> [{{{PartialKey,'$1'}, '$2'},[],['$$']}]).</div><div>+<span class="" style="white-space:pre"> </span> [{{{PartialKey,'_'}, '$1'},[],['$1']}]).</div><div> </div><div> %%--------------------------------------------------------------------</div><div> %%% Internal functions</div></div><div><br></div><div><br></div><div>Regards Ingela Erlang/OTP team - Ericsson AB</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-09-07 5:52 GMT+02:00 Sanath Prasanna <span dir="ltr"><<a href="mailto:ahe.sanath@gmail.com" target="_blank">ahe.sanath@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><p class="MsoNormal">Hi all,</p><p class="MsoNormal">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</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">httpc:request(Method, Request, [{timeout, TimeoutTime}],
[{sync, false}])</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">below is the etop output at that time</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">
procs
1134
processes 1504844 code
9309</p>
<p class="MsoNormal">
runq
0
atom
420 ets 29692</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Pid
Name or Initial Func Time Reds
Memory MsgQ Current Function</p>
<p class="MsoNormal">----------------------------------------------------------------------------------------</p>
<p class="MsoNormal"><5490.26428.14>tls_connection:init/
'-' 733224580768 0
gen_fsm:loop/7 </p>
<p class="MsoNormal"><5490.26429.14>tls_connection:init/
'-' 1328524580768 0
gen_fsm:loop/7 </p>
<p class="MsoNormal"><5490.26430.14>tls_connection:init/
'-' 528924580768 0
gen_fsm:loop/7 </p>
<p class="MsoNormal"><5490.26431.14>tls_connection:init/
'-' 1432224580768 0
gen_fsm:loop/7 </p>
<p class="MsoNormal"><5490.26432.14>tls_connection:init/
'-'
024580768 0
gen_fsm:loop/7 </p>
<p class="MsoNormal"><5490.26433.14>tls_connection:init/
'-'
024580768 0
gen_fsm:loop/7 </p>
<p class="MsoNormal"><5490.26434.14>tls_connection:init/
'-' 024580768
0
gen_fsm:loop/7 </p>
<p class="MsoNormal"><5490.26435.14>tls_connection:init/
'-'
024580768 0
gen_fsm:loop/7 </p>
<p class="MsoNormal"><5490.26436.14>tls_connection:init/
'-'
024580768 0
gen_fsm:loop/7 </p><p class="MsoNormal"><br></p><p class="MsoNormal">can some one help me to solve this issue? </p><p class="MsoNormal">Br,</p><p class="MsoNormal">A.H.E. Robert </p></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>