curl-library
Re: Memory consumption of DNS cache when network is down?
From: Ricardo Mota via curl-library <curl-library_at_cool.haxx.se>
Date: Wed, 6 Feb 2019 09:37:39 +0000
Date: Wed, 6 Feb 2019 09:37:39 +0000
Hello Crhis,
I tried your suggestion, recompiling *libcurl* with *c-ares* resolver and
it seems to have solved the problem.
For the sake of completion, could I ask you how did you figured out the
problem was with *glibc*?
Thank you for your support.
--
*Ricardo Mota*
ricardoflmota_at_gmail.com
Phone : +351 924 421 971
Skype : rfl.mota
On Mon, Feb 4, 2019 at 3:41 PM Chris Carlmar via curl-library <
curl-library_at_cool.haxx.se> wrote:
> On 04.02.2019 15:41, Ricardo Mota via curl-library wrote:
> > Hello Daniel, thank you for your reply.
> >
> > This is the build configuration I've used for an ARMv6 linux embedded
> > target:
> >
> > /Host setup: arm-none-linux-gnueabi/
> >
> > / Compiler: arm-none-linux-gnueabi-gcc/
> >
> > / CFLAGS: -Werror-implicit-function-declaration -O2
> > -Wno-system-headers -pthread/
> >
> > / LIBS: -lssl -lcrypto -lz -lrt/
> >
> > /
> > /
> >
> > / curl version: 7.64.0-DEV/
> >
> > / SSL support: enabled (OpenSSL)/
> >
> > / SSH support: no (--with-libssh2)/
> >
> > / zlib support: enabled/
> >
> > / brotli support: no (--with-brotli)/
> >
> > / GSS-API support: no (--with-gssapi)/
> >
> > / TLS-SRP support: enabled/
> >
> > / resolver: POSIX threaded/
> >
> > / IPv6 support: enabled/
> >
> > / Unix sockets support: enabled/
> >
> > / IDN support: no (--with-{libidn2,winidn})/
> >
> > / Build libcurl: Shared=no, Static=yes/
> >
> > / Built-in manual: enabled/
> >
> > / --libcurl option: enabled (--disable-libcurl-option)/
> >
> > / Verbose errors: enabled (--disable-verbose)/
> >
> > / SSPI support: no (--enable-sspi)/
> >
> > / ca cert bundle: no/
> >
> > / ca cert path: no/
> >
> > / ca fallback: no/
> >
> > / LDAP support: no (--enable-ldap / --with-ldap-lib /
> > --with-lber-lib)/
> >
> > / LDAPS support: no (--enable-ldaps)/
> >
> > / RTSP support: enabled/
> >
> > / RTMP support: no (--with-librtmp)/
> >
> > / metalink support: no (--with-libmetalink)/
> >
> > / PSL support: no (libpsl not found)/
> >
> > / HTTP2 support: disabled (--with-nghttp2)/
> >
> > / Protocols: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP
> > IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP/
> >
> >
> > I've used the following /"wrapper"
> > (https://github.com/mrtazz/restclient-cpp)/ for /libcurl/ just doing
> the
> > initialization of an object /connection /and querying a simple REST
> service.
> >
> > I've already tried compiling without /zlib/ or /SSL /support, thinking
> > it could be a problem related with ssl library version I was using, but
> > the problem persisted.
> >
> > I can't get you an exact value for the memory consumption because I
> > don't have many debug tools for the target system but I can see the
> > memory increasing 4KB ~ 10 sec. The only thing I noticed is that if I
> > use direct IP for the connection (without the name resolution), the
> > problem goes away, and the memory only seems to increase when the
> > network is down and the connection fails to resolve the name:
> >
> > /Could not resolve host: abc.com <http://abc.com/>/
> >
> > /* Closing connection XXXX/
> >
> >
> > I've already tried with different /7.xx /versions of /libcurl /but the
> > behavior is the same in all.
> >
> > Any other information I can provide to help debug the issue?
> >
> >
> >
> > On Mon, Feb 4, 2019 at 1:25 PM Daniel Stenberg <daniel_at_haxx.se
> > <mailto:daniel_at_haxx.se>> wrote:
> >
> > On Mon, 4 Feb 2019, Ricardo Mota via curl-library wrote:
> >
> > > I'm experiencing a problem using *libcurl *due to a memory
> > consumption
> > > increase in my application which queries a simple REST API in a
> loop
> > > reusing the same handle. Doing some tests, I only notice this
> memory
> > > increase when I'm using name resolution and specifically when the
> > network
> > > is down. I've already tried to disable DNS cache by setting
> > > *CURLOPT_DNS_CACHE_TIMEOUT
> > > *value to 0 but the problem seems to persist. Can somebody please
> > help me
> > > debugging this problem?
> >
> > What level of memory consumption increase are we talking about?
> >
> > What libcurl version on what platform?
> >
> > I don't think what you're describing is a particularly strong
> > indication that
> > the increase is indeed the DNS cache, and in fact since the cache is
> > used to
> > store name to address data and you say you use it in a loop so
> > surely you just
> > store the same name over and over (or even just reuse the cached
> > content)?
> >
> > so... how can we reproduce this issue?
> >
> > --
> >
> > / daniel.haxx.se <http://daniel.haxx.se>
> >
> >
>
> I had a simular issue using libcurl on an embedded system, leaking when
> DNS could not be reached. It turned out to be a memory leak in the
> version of glibc, which I could not change.
>
> Ended up changing to c-ares, and that stopped the leaking.
>
> --
> mvh
> Chris Carlmar
> -------------------------------------------------------------------
> Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
> Etiquette: https://curl.haxx.se/mail/etiquette.html
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html
Received on 2019-02-06