[erlang-questions] Erlang OTP 18 memory leak / SSL
Loïc Hoguin
essen@REDACTED
Mon Sep 21 12:46:04 CEST 2015
Add {sys_config, "path/to/sys.config"} to your relx.config, then create
that sys.config file with the right options and run make.
On 09/21/2015 12:44 PM, Sereysethy TOUCH wrote:
> Hello,
>
> You meant _rel or I need to create a folder "rel" and put sys.config inside?
>
> Sethy
>
> On Mon, Sep 21, 2015 at 5:09 PM, Loïc Hoguin <essen@REDACTED
> <mailto:essen@REDACTED>> wrote:
>
> On 09/21/2015 12:05 PM, Sereysethy TOUCH wrote:
>
> Hello,
>
> 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.
>
> 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.
>
> I use erlang.mk <http://erlang.mk> <http://erlang.mk> to compile
> our application, I am not
> sure how to set application env. settings. Is it the same if I use
> erlang.mk <http://erlang.mk> <http://erlang.mk>?
>
>
> If you run a release, you can put the configuration in the
> sys.config file (by default rel/sys.config) and run make again. See
> http://www.erlang.org/doc/man/config.html
>
>
>
> Thanks,
> Sethy
>
> On Mon, Sep 21, 2015 at 4:54 PM, Ingela Andin
> <ingela.andin@REDACTED <mailto:ingela.andin@REDACTED>
> <mailto:ingela.andin@REDACTED <mailto:ingela.andin@REDACTED>>>
> wrote:
>
> Hi!
>
>
> 2015-09-21 10:09 GMT+02:00 Sereysethy TOUCH
> <touch.sereysethy@REDACTED
> <mailto:touch.sereysethy@REDACTED>
> <mailto:touch.sereysethy@REDACTED
> <mailto:touch.sereysethy@REDACTED>>>:
>
>
> Hello,
>
> One question, why did my application work fine on
> Erlang 17.5.x
> branch?
>
>
> Well I am not sure what your application does.
>
> 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,
> 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.
>
> However the ets info you sent suggest you have a server
> application
> and then setting session_liftime can help keeping the servers
> session table
> smaller. This also is true for clients, that can get a big
> table
> also through connecting to many diffrent servers.
>
> 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.
>
>
> If I want to set this session_lifetime option, where
> should put it?
>
>
> It is an application environment setting. Search for app in
> the docs.
>
>
> So there is no use that I should build the erlang 18
> from maint
> branch?
>
>
>
> 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.
>
> Regards Ingela Erlang/OTP tema Ericsson AB
>
>
> Thanks,
> Sethy
>
> On Mon, Sep 21, 2015 at 2:51 PM, Ingela Andin
> <ingela.andin@REDACTED <mailto:ingela.andin@REDACTED>
> <mailto:ingela.andin@REDACTED <mailto:ingela.andin@REDACTED>>>
> wrote:
>
> Hello,
>
> 2015-09-20 15:24 GMT+02:00 Sereysethy TOUCH
> <touch.sereysethy@REDACTED
> <mailto:touch.sereysethy@REDACTED>
> <mailto:touch.sereysethy@REDACTED
> <mailto:touch.sereysethy@REDACTED>>>:
>
>
> Hello,
>
> I did as what you told me by getting a shell
> console on
> the node.
>
> 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.
>
> 32794 client_ssl_otp_session_cache
> ordered_set
> 0 89 ssl_manager
> 36891 server_ssl_otp_session_cache
> ordered_set
> 1564 67995 ssl_manager
> 40993
> httpc_manager__session_cookie_db bag 0
> 299 httpc_manager
>
> So I think there is a problem with ssl_manager
> in Erlang
> OTP 18.
>
> Any workarounds?
>
>
>
> Ok, the bug I fixed with the session table is on
> the client
> side. But your big ets table is on the server side.
> Session data is by default fairly long lived (24 h
> that is
> the max recommended time to keep a session by the RFC),
> you can set the ssl application variable
> session_lifetime to
> make its lifetime shorter which should mitigate
> your problem.
> 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
> implemented fairly soon but alas not for 18.1.
>
> Regards Ingela Erlang/OTP Team - Ericsson AB
>
> Sethy
>
> On Sun, Sep 20, 2015 at 2:22 AM, Jesper Louis
> Andersen
> <jesper.louis.andersen@REDACTED
> <mailto:jesper.louis.andersen@REDACTED>
> <mailto:jesper.louis.andersen@REDACTED
> <mailto:jesper.louis.andersen@REDACTED>>> wrote:
>
>
> On Sat, Sep 19, 2015 at 6:34 PM, Sereysethy
> TOUCH
> <touch.sereysethy@REDACTED
> <mailto:touch.sereysethy@REDACTED>
> <mailto:touch.sereysethy@REDACTED
> <mailto:touch.sereysethy@REDACTED>>> wrote:
>
> 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.
>
>
> 1. Get a shell console on the node
> 2. call 'memory().' in the shell
> 3. If it reports ets as the winner, call
> 4. ets:i().
>
> This will give you a nice overview for
> where to look
> and verify it is the SSL problem.
>
>
> --
> J.
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> <mailto:erlang-questions@REDACTED
> <mailto:erlang-questions@REDACTED>>
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
>
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
> --
> Loïc Hoguin
> http://ninenines.eu
> Author of The Erlanger Playbook,
> A book about software development using Erlang
>
>
--
Loïc Hoguin
http://ninenines.eu
Author of The Erlanger Playbook,
A book about software development using Erlang
More information about the erlang-questions
mailing list