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