[syslog-ng] syslog-ng never frees RAM

Jose Angel Santiago jasantiago at stratio.com
Thu Sep 6 11:14:58 UTC 2018


Hi,

I had to restart syslog-ng process because it was affecting other services
in the same host.

I've checked another host with was running with the fix too, it has 23000
files monitored and 38700 folders under base-dir, and now it's starting to
eat the RAM, the cleaning process will be executed in about an hour (I'm
sorry I can't force to do it before)

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
96 root      20   0  *5.609g 4.274g* 0.006g R *101.3*  *6.8 *  1263:46
syslog-ng

Trace of pmap:

96:   /syslog-ng/exec/sbin/syslog-ng -F --no-caps -f
/etc/syslog-ng/syslog-ng.conf -p /var/syslog-ng/syslog-ng.pid -R
/var/syslog-ng/syslog-ng.persist -c /var/syslog-ng/syslog-ng.ctl
0000000000400000     12K r-x-- syslog-ng
0000000000602000      4K r---- syslog-ng
0000000000603000      4K rw--- syslog-ng
00000000015bc000 5689360K rw---   [ anon ]
00007ff9c8000000  19588K rw---   [ anon ]
00007ff9c9321000  45948K -----   [ anon ]
00007ff9cc000000   4288K rw---   [ anon ]
00007ff9cc430000  61248K -----   [ anon ]
00007ff9d0000000  26844K rw---   [ anon ]
00007ff9d1a37000  38692K -----   [ anon ]
00007ff9d4000000  10280K rw---   [ anon ]
00007ff9d4a0a000  55256K -----   [ anon ]
00007ff9dc000000  64604K rw---   [ anon ]
00007ff9dff17000    932K -----   [ anon ]
00007ff9e0000000  65508K rw---   [ anon ]
00007ff9e3ff9000     28K -----   [ anon ]
00007ff9e8000000   4480K rw---   [ anon ]
00007ff9e8460000  61056K -----   [ anon ]
00007ff9f0000000  65488K rw---   [ anon ]
00007ff9f3ff4000     48K -----   [ anon ]
00007ff9f8000000  14716K rw---   [ anon ]
00007ff9f8e5f000  50820K -----   [ anon ]
00007ffa00000000  18252K rw---   [ anon ]
00007ffa011d3000  47284K -----   [ anon ]
00007ffa08000000  65536K rw---   [ anon ]
00007ffa0c000000  30460K rw---   [ anon ]
00007ffa0ddbf000  35076K -----   [ anon ]
00007ffa10000000  65484K rw---   [ anon ]
00007ffa13ff3000     52K -----   [ anon ]
00007ffa167fd000      4K -----   [ anon ]
00007ffa167fe000   8192K rw---   [ anon ]
00007ffa18000000   7920K rw---   [ anon ]
00007ffa187bc000  57616K -----   [ anon ]
00007ffa1cffa000      4K -----   [ anon ]
00007ffa1cffb000   8192K rw---   [ anon ]
00007ffa1f7ff000      4K -----   [ anon ]
00007ffa1f800000   8192K rw---   [ anon ]
00007ffa20000000  65536K rw---   [ anon ]
00007ffa24000000  14764K rw---   [ anon ]
00007ffa24e6b000  50772K -----   [ anon ]
00007ffa28000000  24348K rw---   [ anon ]
00007ffa297c7000  41188K -----   [ anon ]
00007ffa2c000000  40916K rw---   [ anon ]
00007ffa2e7f5000  24620K -----   [ anon ]
00007ffa30000000  17684K rw---   [ anon ]
00007ffa31145000  47852K -----   [ anon ]
00007ffa34000000  10988K rw---   [ anon ]
00007ffa34abb000  54548K -----   [ anon ]
00007ffa38000000  20464K rw---   [ anon ]
00007ffa393fc000  45072K -----   [ anon ]
00007ffa3c316000      4K -----   [ anon ]
00007ffa3c317000   8192K rw---   [ anon ]
00007ffa3ea78000      4K -----   [ anon ]
00007ffa3ea79000   8192K rw---   [ anon ]
00007ffa3fbee000   7360K rw-s- syslog-ng.persist
00007ffa4031e000     92K r-x-- libresolv-2.23.so
00007ffa40335000   2048K ----- libresolv-2.23.so
00007ffa40535000      4K r---- libresolv-2.23.so
00007ffa40536000      4K rw--- libresolv-2.23.so
00007ffa40537000      8K rw---   [ anon ]
00007ffa40539000     20K r-x-- libnss_dns-2.23.so
00007ffa4053e000   2048K ----- libnss_dns-2.23.so
00007ffa4073e000      4K r---- libnss_dns-2.23.so
00007ffa4073f000      4K rw--- libnss_dns-2.23.so
00007ffa40740000   3328K rw---   [ anon ]
00007ffa40ac0000    256K rw---   [ anon ]
00007ffa40b40000    512K rw---   [ anon ]
00007ffa40c00000    256K rw---   [ anon ]
00007ffa40c6c000    256K rw---   [ anon ]
00007ffa40d6c000     44K r-x-- libsyslogformat.so
00007ffa40d77000   2044K ----- libsyslogformat.so
00007ffa40f76000      4K r---- libsyslogformat.so
00007ffa40f77000      4K rw--- libsyslogformat.so
00007ffa40f78000   4612K rw---   [ anon ]
00007ffa413f9000     24K r-x-- _hashlib.x86_64-linux-gnu.so
00007ffa413ff000   2044K ----- _hashlib.x86_64-linux-gnu.so
00007ffa415fe000      4K r---- _hashlib.x86_64-linux-gnu.so
00007ffa415ff000      4K rw--- _hashlib.x86_64-linux-gnu.so
00007ffa41600000    256K rw---   [ anon ]
00007ffa41640000     48K r-x-- _json.x86_64-linux-gnu.so
00007ffa4164c000   2044K ----- _json.x86_64-linux-gnu.so
00007ffa4184b000      4K r---- _json.x86_64-linux-gnu.so
00007ffa4184c000      4K rw--- _json.x86_64-linux-gnu.so
00007ffa4184d000     84K r-x-- _ssl.x86_64-linux-gnu.so
00007ffa41862000   2044K ----- _ssl.x86_64-linux-gnu.so
00007ffa41a61000      4K r---- _ssl.x86_64-linux-gnu.so
00007ffa41a62000     16K rw--- _ssl.x86_64-linux-gnu.so
00007ffa41a66000    768K rw---   [ anon ]
00007ffa41b57000    256K rw---   [ anon ]
00007ffa41b97000   1056K r-x-- libm-2.23.so
00007ffa41c9f000   2044K ----- libm-2.23.so
00007ffa41e9e000      4K r---- libm-2.23.so
00007ffa41e9f000      4K rw--- libm-2.23.so
00007ffa41ea0000      8K r-x-- libutil-2.23.so
00007ffa41ea2000   2044K ----- libutil-2.23.so
00007ffa420a1000      4K r---- libutil-2.23.so
00007ffa420a2000      4K rw--- libutil-2.23.so
00007ffa420a3000    100K r-x-- libz.so.1.2.8
00007ffa420bc000   2044K ----- libz.so.1.2.8
00007ffa422bb000      4K r---- libz.so.1.2.8
00007ffa422bc000      4K rw--- libz.so.1.2.8
00007ffa422bd000   3016K r-x-- libpython2.7.so.1.0
00007ffa425af000   2048K ----- libpython2.7.so.1.0
00007ffa427af000      8K r---- libpython2.7.so.1.0
00007ffa427b1000    476K rw--- libpython2.7.so.1.0
00007ffa42828000    140K rw---   [ anon ]
00007ffa4284b000     72K r-x-- libmod-python.so
00007ffa4285d000   2044K ----- libmod-python.so
00007ffa42a5c000      4K r---- libmod-python.so
00007ffa42a5d000      4K rw--- libmod-python.so
00007ffa42a5e000      4K rw---   [ anon ]
00007ffa42a5f000     32K r-x-- libwrap.so.0.7.6
00007ffa42a67000   2044K ----- libwrap.so.0.7.6
00007ffa42c66000      4K r---- libwrap.so.0.7.6
00007ffa42c67000      4K rw--- libwrap.so.0.7.6
00007ffa42c68000      4K rw---   [ anon ]
00007ffa42c69000     88K r-x-- libnet.so.1.7.0
00007ffa42c7f000   2044K ----- libnet.so.1.7.0
00007ffa42e7e000      4K r---- libnet.so.1.7.0
00007ffa42e7f000      4K rw--- libnet.so.1.7.0
00007ffa42e80000      8K rw---   [ anon ]
00007ffa42e82000    132K r-x-- libafsocket.so
00007ffa42ea3000   2048K ----- libafsocket.so
00007ffa430a3000      4K r---- libafsocket.so
00007ffa430a4000      8K rw--- libafsocket.so
00007ffa430a6000      4K rw---   [ anon ]
00007ffa430a7000    108K r-x-- libaffile.so
00007ffa430c2000   2044K ----- libaffile.so
00007ffa432c1000      4K r---- libaffile.so
00007ffa432c2000      4K rw--- libaffile.so
00007ffa432c3000      4K rw---   [ anon ]
00007ffa432c4000      8K r-x-- libconfgen.so
00007ffa432c6000   2044K ----- libconfgen.so
00007ffa434c5000      4K r---- libconfgen.so
00007ffa434c6000      4K rw--- libconfgen.so
00007ffa434c7000     36K r-x-- libbasicfuncs.so
00007ffa434d0000   2048K ----- libbasicfuncs.so
00007ffa436d0000      4K r---- libbasicfuncs.so
00007ffa436d1000      8K rw--- libbasicfuncs.so
00007ffa436d3000     32K r-x-- libappmodel.so
00007ffa436db000   2048K ----- libappmodel.so
00007ffa438db000      4K r---- libappmodel.so
00007ffa438dc000      4K rw--- libappmodel.so
00007ffa438dd000     40K r-x-- libjson-c.so.2.0.0
00007ffa438e7000   2044K ----- libjson-c.so.2.0.0
00007ffa43ae6000      4K r---- libjson-c.so.2.0.0
00007ffa43ae7000      4K rw--- libjson-c.so.2.0.0
00007ffa43ae8000     40K r-x-- libjson-plugin.so
00007ffa43af2000   2048K ----- libjson-plugin.so
00007ffa43cf2000      4K r---- libjson-plugin.so
00007ffa43cf3000      4K rw--- libjson-plugin.so
00007ffa43cf4000     44K r-x-- libnss_nis-2.23.so
00007ffa43cff000   2044K ----- libnss_nis-2.23.so
00007ffa43efe000      4K r---- libnss_nis-2.23.so
00007ffa43eff000      4K rw--- libnss_nis-2.23.so
00007ffa43f00000     88K r-x-- libnsl-2.23.so
00007ffa43f16000   2044K ----- libnsl-2.23.so
00007ffa44115000      4K r---- libnsl-2.23.so
00007ffa44116000      4K rw--- libnsl-2.23.so
00007ffa44117000      8K rw---   [ anon ]
00007ffa44119000     32K r-x-- libnss_compat-2.23.so
00007ffa44121000   2044K ----- libnss_compat-2.23.so
00007ffa44320000      4K r---- libnss_compat-2.23.so
00007ffa44321000      4K rw--- libnss_compat-2.23.so
00007ffa44322000     44K r-x-- libnss_files-2.23.so
00007ffa4432d000   2044K ----- libnss_files-2.23.so
00007ffa4452c000      4K r---- libnss_files-2.23.so
00007ffa4452d000      4K rw--- libnss_files-2.23.so
00007ffa4452e000     24K rw---   [ anon ]
00007ffa44534000     72K r-x-- libgpg-error.so.0.17.0
00007ffa44546000   2048K ----- libgpg-error.so.0.17.0
00007ffa44746000      4K r---- libgpg-error.so.0.17.0
00007ffa44747000      4K rw--- libgpg-error.so.0.17.0
00007ffa44748000    864K r-x-- libgcrypt.so.20.0.5
00007ffa44820000   2044K ----- libgcrypt.so.20.0.5
00007ffa44a1f000      4K r---- libgcrypt.so.20.0.5
00007ffa44a20000     32K rw--- libgcrypt.so.20.0.5
00007ffa44a28000      4K rw---   [ anon ]
00007ffa44a29000    132K r-x-- liblzma.so.5.0.0
00007ffa44a4a000   2044K ----- liblzma.so.5.0.0
00007ffa44c49000      4K r---- liblzma.so.5.0.0
00007ffa44c4a000      4K rw--- liblzma.so.5.0.0
00007ffa44c4b000    124K r-x-- libselinux.so.1
00007ffa44c6a000   2044K ----- libselinux.so.1
00007ffa44e69000      4K r---- libselinux.so.1
00007ffa44e6a000      4K rw--- libselinux.so.1
00007ffa44e6b000      8K rw---   [ anon ]
00007ffa44e6d000   2152K r-x-- libcrypto.so.1.0.0
00007ffa45087000   2044K ----- libcrypto.so.1.0.0
00007ffa45286000    112K r---- libcrypto.so.1.0.0
00007ffa452a2000     48K rw--- libcrypto.so.1.0.0
00007ffa452ae000     12K rw---   [ anon ]
00007ffa452b1000    376K r-x-- libssl.so.1.0.0
00007ffa4530f000   2048K ----- libssl.so.1.0.0
00007ffa4550f000     16K r---- libssl.so.1.0.0
00007ffa45513000     28K rw--- libssl.so.1.0.0
00007ffa4551a000     12K r-x-- libsecret-storage.so.0.0.0
00007ffa4551d000   2044K ----- libsecret-storage.so.0.0.0
00007ffa4571c000      4K r---- libsecret-storage.so.0.0.0
00007ffa4571d000      4K rw--- libsecret-storage.so.0.0.0
00007ffa4571e000     12K r-x-- libdl-2.23.so
00007ffa45721000   2044K ----- libdl-2.23.so
00007ffa45920000      4K r---- libdl-2.23.so
00007ffa45921000      4K rw--- libdl-2.23.so
00007ffa45922000    440K r-x-- libpcre.so.3.13.2
00007ffa45990000   2048K ----- libpcre.so.3.13.2
00007ffa45b90000      4K r---- libpcre.so.3.13.2
00007ffa45b91000      4K rw--- libpcre.so.3.13.2
00007ffa45b92000     16K r-x-- libcap.so.2.24
00007ffa45b96000   2048K ----- libcap.so.2.24
00007ffa45d96000      4K r---- libcap.so.2.24
00007ffa45d97000      4K rw--- libcap.so.2.24
00007ffa45d98000     12K r-x-- libevtlog-3.17.so.0.0.0
00007ffa45d9b000   2048K ----- libevtlog-3.17.so.0.0.0
00007ffa45f9b000      4K r---- libevtlog-3.17.so.0.0.0
00007ffa45f9c000      4K rw--- libevtlog-3.17.so.0.0.0
00007ffa45f9d000      4K r-x-- libgthread-2.0.so.0.4800.2
00007ffa45f9e000   2044K ----- libgthread-2.0.so.0.4800.2
00007ffa4619d000      4K r---- libgthread-2.0.so.0.4800.2
00007ffa4619e000      4K rw--- libgthread-2.0.so.0.4800.2
00007ffa4619f000     12K r-x-- libgmodule-2.0.so.0.4800.2
00007ffa461a2000   2044K ----- libgmodule-2.0.so.0.4800.2
00007ffa463a1000      4K r---- libgmodule-2.0.so.0.4800.2
00007ffa463a2000      4K rw--- libgmodule-2.0.so.0.4800.2
00007ffa463a3000     28K r-x-- librt-2.23.so
00007ffa463aa000   2044K ----- librt-2.23.so
00007ffa465a9000      4K r---- librt-2.23.so
00007ffa465aa000      4K rw--- librt-2.23.so
00007ffa465ab000   1792K r-x-- libc-2.23.so
00007ffa4676b000   2044K ----- libc-2.23.so
00007ffa4696a000     16K r---- libc-2.23.so
00007ffa4696e000      8K rw--- libc-2.23.so
00007ffa46970000     16K rw---   [ anon ]
00007ffa46974000     96K r-x-- libpthread-2.23.so
00007ffa4698c000   2044K ----- libpthread-2.23.so
00007ffa46b8b000      4K r---- libpthread-2.23.so
00007ffa46b8c000      4K rw--- libpthread-2.23.so
00007ffa46b8d000     16K rw---   [ anon ]
00007ffa46b91000   1084K r-x-- libglib-2.0.so.0.4800.2
00007ffa46ca0000   2044K ----- libglib-2.0.so.0.4800.2
00007ffa46e9f000      4K r---- libglib-2.0.so.0.4800.2
00007ffa46ea0000      4K rw--- libglib-2.0.so.0.4800.2
00007ffa46ea1000      4K rw---   [ anon ]
00007ffa46ea2000    768K r-x-- libsyslog-ng-3.17.so.0.0.0
00007ffa46f62000   2044K ----- libsyslog-ng-3.17.so.0.0.0
00007ffa47161000     16K r---- libsyslog-ng-3.17.so.0.0.0
00007ffa47165000     24K rw--- libsyslog-ng-3.17.so.0.0.0
00007ffa4716b000      8K rw---   [ anon ]
00007ffa4716d000    152K r-x-- ld-2.23.so
00007ffa471ba000    256K rw---   [ anon ]
00007ffa472a2000    256K rw---   [ anon ]
00007ffa472e2000     64K rwx--   [ anon ]
00007ffa472f2000     28K r--s- gconv-modules.cache
00007ffa472f9000     36K rw---   [ anon ]
00007ffa47302000    512K r-x-- libsystemd.so.0.14.0
00007ffa47382000     12K r---- libsystemd.so.0.14.0
00007ffa47385000      4K rw--- libsystemd.so.0.14.0
00007ffa47386000     20K rw---   [ anon ]
00007ffa47390000      8K rw---   [ anon ]
00007ffa47392000      4K r---- ld-2.23.so
00007ffa47393000      4K rw--- ld-2.23.so
00007ffa47394000      4K rw---   [ anon ]
00007ffe81489000    132K rw---   [ stack ]
00007ffe81564000      8K r-x--   [ anon ]
ffffffffff600000      4K r-x--   [ anon ]
 total          7226528K


Configuration:

@version: 3.16.1
@module mod-java
@include "/etc/syslog-ng/scl.conf"

options {
    chain_hostnames(off);
    use-dns(no);
    use-fqdn(no);
    owner("syslog-ng");
    group("stratio");
    perm(0640);
    stats_freq(0);
    bad-hostname("^gconfd$");
    flush-lines(100);
    log-fifo-size(345000);
};

########################
# Filters
########################
# Here's come the filter options. With this rules, we can set which
# message go where.

filter f_dbg { level(debug); };
filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_err { level(err); };
filter f_crit { level(crit .. emerg); };

filter f_debug { level(debug) and not facility(auth, authpriv, news, mail);
};
filter f_error { level(err .. emerg) ; };
filter f_messages { level(info,notice,warn) and
                    not facility(auth,authpriv,cron,daemon,mail,news); };

filter f_auth { facility(auth, authpriv) and not filter(f_debug); };
filter f_cron { facility(cron) and not filter(f_debug); };
filter f_daemon { facility(daemon) and not filter(f_debug); };
filter f_kern { facility(kern) and not filter(f_debug); };
filter f_lpr { facility(lpr) and not filter(f_debug); };
filter f_local { facility(local0, local1, local3, local4, local5,
                        local6, local7) and not filter(f_debug); };
filter f_mail { facility(mail) and not filter(f_debug); };
filter f_news { facility(news) and not filter(f_debug); };
filter f_syslog3 { not facility(auth, authpriv, mail) and not
filter(f_debug); };
filter f_user { facility(user) and not filter(f_debug); };

filter f_text_only {
  not match(
    ".*[\\x80-\\xFF].*"
    value("MESSAGE")
  );
};

###
# Sources

source s_stdout_files { wildcard-file(
    base-dir("/var/lib/slaves/")
    filename-pattern("stdout")
    max-files(3400)
    follow-freq(0.5)
    monitor-method(poll)
    log-fetch-limit(100)
    log-iw-size(345000)
    flags(no-parse)
    recursive(yes)
    multi-line-mode(indented)
); };

source s_stderr_files { wildcard-file(
    base-dir("/var/lib/slaves/")
    filename-pattern("stderr")
    max-files(3400)
    follow-freq(0.5)
    monitor-method(poll)
    log-fetch-limit(100)
    log-iw-size(345000)
    flags(no-parse)
    recursive(yes)
    multi-line-mode(indented)
); };


Thanks.


2018-09-06 12:59 GMT+02:00 Nemes, Antal <antal.nemes at oneidentity.com>:

>   Hi,
>
> The same free policy cannot work with _handle_file_deleted, because we
> cannot free the readers immediately. There is a race between file delete
> and syslog-ng reading the data. It can happen that one deletes a file
> before syslog-ng reads all its contents, which would cause message loss. In
> that case we just signal the deletion event to the reader
> (log_pipe_notify(&reader->super, NC_FILE_DELETED, NULL); and when the
> reader reads EOF at a later time, that's when the reader object is freed.
>
> Can you send the output of pmap <pid of syslog-ng> with the leak? That may
> give us a clue where to look with the leak.
>
> Also can you send your configuration, or at least the part about the
> wildcard filesources? The reproduction might depend on max_files or
> monitor_method parameter, or maybe other.
>
> Thanks,
>   Antal
>
>
> On Thu, Sep 6, 2018 at 12:00 PM Jose Angel Santiago <
> jasantiago at stratio.com> wrote:
>
>> Reviewing your commit I've found out that the method
>> *_handle_file_deleted* seems not to free memory when a monitored file
>> has been deleted, according to the changes you made in
>> *_handler_handler_directory_deleted.* Could it be the cause of the
>> memory leak?
>>
>> Thanks.
>>
>> 2018-09-06 11:50 GMT+02:00 Jose Angel Santiago <jasantiago at stratio.com>:
>>
>>> Hi,
>>>
>>> I was testing your fix in several environments before replying,
>>> unfortunately syslog-ng stills shows a huge RAM consumption in our use of
>>> case.
>>>
>>> We have two wildcard-file sources defined in our syslog-ng conf file,
>>> both of them have the same base-dir reference, but one source has a
>>> filename-pattern and the other source has a different one (I think we can't
>>> use the same source and several filename-patterns because of the lack of
>>> regular expression support). We execute the deletion of obsolete files and
>>> folder under base-dir once every 2 days, and we create a lot of new folders
>>> and files constantly while using our platform, but the growth of these log
>>> files (the ones affected by the filename-pattern) has been pretty low in
>>> this test, about 10-20 msgs per second total.
>>>
>>> This is some data of the fix test:
>>>
>>> Syslog-ng was consuming 21,7G of RAM with 10600 files affected by the
>>> filename-pattern and 20000 folders under base-dir (not a single folder were
>>> deleted yet so this is the expected behaviour of syslog-ng, and we find it
>>> extremely unaffordable)
>>>
>>> One hour later, right before the cleaning process was executed,
>>> syslog-ng was consuming 35G of RAM, and it didn't decrease after the
>>> cleaning, not even a little, with just 380 files affected by the
>>> filename-pattern and 2200 folders under base-dir.
>>>
>>> There is no message in the syslog-agent queue and all the messages are
>>> received by the relay (which ingest messages in an elasticsearch)
>>>
>>> For the record, we do noticed a small RAM usage decrease in a previous
>>> test in a lab environment when we deleted every folder & file under
>>> base-dir (from 870M to 550M).
>>>
>>> It seems syslog-ng wildcard-source is not optimized when it has too
>>> handle thousands of folders and filename-patterns under base-dir. Have you
>>> ever test the wildcard-source with a use of case similar to ours?
>>>
>>> Can I send you any more information which may help to find out how to
>>> optimize it? I wish I can help with the code but I have no idea of C
>>> language :-(
>>>
>>> Thanks in advance.
>>>
>>>
>>>
>>>
>>> 2018-09-04 18:03 GMT+02:00 Nagy, Gábor <gabor.nagy at oneidentity.com>:
>>>
>>>> Hello,
>>>>
>>>> Thanks for the thorough investigation!
>>>> We've checked it and found a memory leak in directory monitoring.
>>>>
>>>> I've pushed the fix to my fork and created a merge request about it:
>>>> https://github.com/gaborznagy/syslog-ng/commits/fix-wildcard-memleak
>>>> https://github.com/balabit/syslog-ng/pull/2261
>>>> Can you verify that this fixes your problem, please?
>>>>
>>>> > log-fifo-size value is 345000, so I assume it can't be a buffer
>>>> situation since 345000 messages can't occupy 40-50 GB of memory.
>>>> Well our default log-msg-size is 64kB so if all messages have a size of
>>>> log-msg-size then it can be around ~21GB when syslog-ng is buffering.
>>>>
>>>> Best Regards,
>>>> Gabor
>>>>
>>>>
>>>> On Tue, Sep 4, 2018 at 10:50 AM Jose Angel Santiago <
>>>> jasantiago at stratio.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I'm using syslog-ng 3.16.1 with wildcard-file as source (let's call it
>>>>> "syslog-agent), which sends log messages to another syslog-ng acting as a
>>>>> relay.
>>>>>
>>>>> I've noticed that syslog-agent instances RAM consumption keeps
>>>>> increasing until they leave no free memory in the cluster (each server has
>>>>> 64G of RAM). In my use case, new folders & files are created constantly
>>>>> under base-dir folder, but every 2 days obsolete folders & files are
>>>>> deleted. I assumed that syslog-ng would free some RAM every time those
>>>>> folders & files are deleted, but it doesn't, not even if I run a
>>>>> syslog-ng-ctl reload operation.
>>>>>
>>>>> log-fifo-size value is 345000, so I assume it can't be a buffer
>>>>> situation since 345000 messages can't occupy 40-50 GB of memory.
>>>>>
>>>>> I've performed the following test to reproduce the situation in small
>>>>> scale:
>>>>>
>>>>> - Launch a syslog-agent with a wildcard-file source reading from
>>>>> "/tmp/test/" base-dir. syslog-agent RAM usage is about 125M.
>>>>> - Run a simple script to create complex folder hierarchy under
>>>>> /tmp/test and some files with 5000 log messages to read from.
>>>>> - Wait until syslog-agent RAM usage gets 1GB
>>>>> - Stop script execution and wait until syslog-agent has send all logs
>>>>> to relay.
>>>>> - Delete everything under /tmp/test and execute syslog-ng-ctl reload
>>>>> operation
>>>>> - 24 hours after, syslog-agent RAM usage still is 1GB
>>>>>
>>>>> I've used heaptrack tool as a try to find a memory leak in syslog-ng,
>>>>> you can see in the attached image that iv_list_empty function in iv_list.h
>>>>> file is where most of the RAM usage is.
>>>>>
>>>>> How do I get syslog-ng to free RAM? Or is it a memory leak?
>>>>>
>>>>> Thanks in advance.
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> | Jose Angel Santiago
>>>>>
>>>>> [image: Logo_signature2.png] <http://www.stratio.com/>
>>>>>
>>>>> Vía de las dos Castillas, 33, Ática 4, 3ª Planta
>>>>>
>>>>> 28224 Pozuelo de Alarcón, Madrid, Spain
>>>>>
>>>>> +34 918 286 473 <+34%20918%2028%2064%2073> | www.stratio.com
>>>>> <https://twitter.com/stratiobd>
>>>>> <https://www.linkedin.com/company/stratiobd>
>>>>> <https://www.youtube.com/c/StratioBD>
>>>>> ____________________________________________________________
>>>>> __________________
>>>>> Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng
>>>>> Documentation: http://www.balabit.com/support/documentation/?
>>>>> product=syslog-ng
>>>>> FAQ: http://www.balabit.com/wiki/syslog-ng-faq
>>>>>
>>>>>
>>>> ____________________________________________________________
>>>> __________________
>>>> Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng
>>>> Documentation: http://www.balabit.com/support/documentation/?
>>>> product=syslog-ng
>>>> FAQ: http://www.balabit.com/wiki/syslog-ng-faq
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>> | Jose Angel Santiago
>>>
>>> [image: Logo_signature2.png] <http://www.stratio.com/>
>>>
>>> Vía de las dos Castillas, 33, Ática 4, 3ª Planta
>>>
>>> 28224 Pozuelo de Alarcón, Madrid, Spain
>>>
>>> +34 918 286 473 <+34%20918%2028%2064%2073> | www.stratio.com
>>> <https://twitter.com/stratiobd>
>>> <https://www.linkedin.com/company/stratiobd>
>>> <https://www.youtube.com/c/StratioBD>
>>>
>>
>>
>>
>> --
>>
>> | Jose Angel Santiago
>>
>> [image: Logo_signature2.png] <http://www.stratio.com/>
>>
>> Vía de las dos Castillas, 33, Ática 4, 3ª Planta
>>
>> 28224 Pozuelo de Alarcón, Madrid, Spain
>>
>> +34 918 286 473 <+34%20918%2028%2064%2073> | www.stratio.com
>> <https://twitter.com/stratiobd>
>> <https://www.linkedin.com/company/stratiobd>
>> <https://www.youtube.com/c/StratioBD>
>> ____________________________________________________________
>> __________________
>> Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng
>> Documentation: http://www.balabit.com/support/documentation/?
>> product=syslog-ng
>> FAQ: http://www.balabit.com/wiki/syslog-ng-faq
>>
>>
> ____________________________________________________________
> __________________
> Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng
> Documentation: http://www.balabit.com/support/documentation/?
> product=syslog-ng
> FAQ: http://www.balabit.com/wiki/syslog-ng-faq
>
>
>


-- 

| Jose Angel Santiago

[image: Logo_signature2.png] <http://www.stratio.com/>

Vía de las dos Castillas, 33, Ática 4, 3ª Planta

28224 Pozuelo de Alarcón, Madrid, Spain

+34 918 286 473 | www.stratio.com
<https://twitter.com/stratiobd> <https://www.linkedin.com/company/stratiobd>
<https://www.youtube.com/c/StratioBD>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.balabit.hu/pipermail/syslog-ng/attachments/20180906/37c20d7d/attachment-0001.html>


More information about the syslog-ng mailing list