<div dir="ltr">Hello,<div><br></div><div>My application is both TLS-client & server. It is a web server which allows client browser to connect to server using websocket. I use cowboy as web server & web socket server.</div><div><br></div><div>In erlang 17, our application runs for weeks and there is no memory issue. We only restart it whenever we have a new update. But since we update to elang 18, we need to restart our application every 2 hours.</div><div><br></div><div>I use <a href="http://erlang.mk">erlang.mk</a> to compile our application, I am not sure how to set application env. settings. Is it the same if I use <a href="http://erlang.mk">erlang.mk</a>?</div><div><br></div><div>Thanks,</div><div>Sethy</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 21, 2015 at 4:54 PM, Ingela Andin <span dir="ltr"><<a href="mailto:ingela.andin@gmail.com" target="_blank">ingela.andin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">Hi!</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote"><span class="">2015-09-21 10:09 GMT+02:00 Sereysethy TOUCH <span dir="ltr"><<a href="mailto:touch.sereysethy@gmail.com" target="_blank">touch.sereysethy@gmail.com</a>></span>:<br></span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><span class=""><div>One question, why did my application work fine on Erlang 17.5.x branch?</div><div><br></div></span></div></blockquote><div><br></div><div>Well I am not sure what your application does. </div><div><br></div><div>If you have a client application that spawns a lot of parallel connections to the same host, not waiting for one to succeed before spawning,</div><div>the client session table could grow a lot. However I have implemented a feature to only save unique TLS-sessions in this senario to avoid this, and there was a bug so that this feature did not work, that I have fix in the maint branch. This bug however was in 17 as well as 18. </div><div><br></div><div>However the ets info you sent suggest you have a server application and then setting session_liftime can help keeping the servers session table</div><div>smaller. This also is true for clients, that can get a big table also through connecting to many diffrent servers. </div><div><br></div><div>Maybe your application can be both a TLS-client and server? There is no obvious reason from what you told us so far that it should work better in 17 then 18. </div><span class=""><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div></div><div>If I want to set this <span style="font-size:12.8px">session_lifetime option, where should put it?</span></div><div><span style="font-size:12.8px"><br></span></div></div></blockquote><div><br></div></span><div>It is an application environment setting. Search for app in the docs.</div><span class=""><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><span style="font-size:12.8px"></span></div><div><span style="font-size:12.8px">So there is no use that I should build the erlang 18 from maint branch?</span></div><div><span style="font-size:12.8px"><br></span></div></div></blockquote><div><br></div><div><br></div></span><div>It is always a good thing to try the latest version, and if you still have a problem it would be good if you could try providing a way to reproduce the problem.</div><div><br></div><div>Regards Ingela Erlang/OTP tema Ericsson AB</div><div><div class="h5"><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><span style="font-size:12.8px"></span></div><div><span style="font-size:12.8px">Thanks,</span></div><div><span style="font-size:12.8px">Sethy</span></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 21, 2015 at 2:51 PM, Ingela Andin <span dir="ltr"><<a href="mailto:ingela.andin@gmail.com" target="_blank">ingela.andin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hello,<br><div class="gmail_extra"><br><div class="gmail_quote"><span>2015-09-20 15:24 GMT+02:00 Sereysethy TOUCH <span dir="ltr"><<a href="mailto:touch.sereysethy@gmail.com" target="_blank">touch.sereysethy@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>I did as what you told me by getting a shell console on the node.</div><div><br></div><div>I run memory(). and see ets ate the most memory. And it increased overtime. I run ets:i(). and I found out the ssl_manager took a big chunk of what memory used.</div><div><br></div><div><div>32794           client_ssl_otp_session_cache ordered_set 0      89       ssl_manager</div><div>36891           server_ssl_otp_session_cache ordered_set 1564   67995    ssl_manager</div><div>40993           httpc_manager__session_cookie_db bag   0      299      httpc_manager</div></div><div><br></div><div>So I think there is a problem with ssl_manager in Erlang OTP 18.</div><div><br></div><div>Any workarounds?</div><div><br></div></div></blockquote><div><br></div><div><br></div></span><div>Ok, the bug I fixed with the session table is on the client side.  But your big ets table is on the server side. </div><div>Session data is by default  fairly long lived (24 h that is the max recommended time to keep a session by the RFC), </div><div>you can set the ssl application variable session_lifetime to make  its lifetime shorter which should mitigate your problem. </div><div>We have a backlog item to make a configurable threshold of max sessions allowed to be stored in the table, which I am sure will be</div><div>implemented fairly soon but alas  not for 18.1.</div><div><br></div><div>Regards Ingela Erlang/OTP Team - Ericsson AB</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span><div dir="ltr"><div></div><div>Sethy</div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 20, 2015 at 2:22 AM, Jesper Louis Andersen <span dir="ltr"><<a href="mailto:jesper.louis.andersen@gmail.com" target="_blank">jesper.louis.andersen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span><br><div class="gmail_quote">On Sat, Sep 19, 2015 at 6:34 PM, Sereysethy TOUCH <span dir="ltr"><<a href="mailto:touch.sereysethy@gmail.com" target="_blank">touch.sereysethy@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I just recently updated Erlang to latest version OTP 18 on Ubuntu server. It uses cowboy (websocket), ranch, ssl, erlydtl & rabbitmq. It used to work fine in OTP 17. The program is correctly compiled but during the execution the memory kept increasing. I need to restart the process every one or two hours to free some memory.</blockquote></div><br></span>1. Get a shell console on the node</div><div class="gmail_extra">2. call 'memory().' in the shell</div><div class="gmail_extra">3. If it reports ets as the winner, call</div><div class="gmail_extra">4. ets:i().</div><div class="gmail_extra"><br></div><div class="gmail_extra">This will give you a nice overview for where to look and verify it is the SSL problem.<span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>J.</div>
</font></span></div></div>
</blockquote></div><br></div>
</div></div><br></span><span>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
</span><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></div>
</blockquote></div><br></div>
</div></div></blockquote></div></div></div><br></div></div>
</blockquote></div><br></div>