On Fri, 18 Mar 2016, Thomas D. wrote:

Hi,

David Lang wrote:
I'm turning off async writes and will report on if this stabilizes the memory
utilization.

to clarify, the timeline was approximatly

3am bump dynafilebuffersize up to 800, shrink the iobuffersize to 64K, 4am change to async, 5am shrink iobuffersize to 32K, 6am shrink iobuffersize to 16K, 10am deploy new version, 2pm disable async, 2:30 comment out a third dynafile action, 3pm split perserver_q ruleset.

prior to turning on async, perserver_q was clearly the limiting thread, with async on, it's utilization dropped to ~40% (throughput increased slightly, with the dyna_files thread being the bottleneck), but the thread count skyrocketed from 17 to 1500+ and memory utilization climed (normal memory used by rsyslog pre-async was ~4%, I saw it above 80% and it hit OOM a half dozen times)

when I deployed the new version, throughput suffered significantly and there still appeared to be a memory leak, but a much smaller/slower one, after 4 hours ory utilization had climbed to ~30% vs OOMing about every hour.

turning off async on the new version stopped the memory leak, no signficant difference in throughput.

splitting the perserver_q ruleset into two rulesets boosted throughput back up to what I was getting with 8.17


Can you share the related omfile settings like "dynaFileCacheSize",
"flushInterval", "ioBufferSize" you are using when experiencing the problem?

And how many async omfile actions do you actual have? Are you able to
sum it up (you said your are using dynfiles...)?

I had three actions, I turned one of them off (in the interest of improving performance), each one is creating ~500 files with ziplevel=9

before I turned off async, these were both in the perserver_q ruleset.

ruleset(name="perserver_q" queue.type="FixedArray" queue.dequeuebatchsize = "500"){ action(type="omfile" template="json" dynafile="perserverjson" dynafilecachesize="800" ziplevel="9" flushinterval="60" name="perserverjson" ioBufferSize="16k" )
}

ruleset(name="perserver_q2" queue.type="FixedArray" queue.dequeuebatchsize = "500"){ action(type="omfile" template="raw" dynafile="perserverdebug" dynafilecachesize="800" ziplevel="9" flushinterval="60" name="perserverdebug" ioBufferSize="16k" )
}


Once I split the perserver_q ruleset, I have one omprog program and the thread below both bumping up against 100% cpu. I don't see an easy way to split this thread :-(

ruleset(name="dyna_files" queue.type="FixedArray" queue.dequeuebatchsize = "500") {
  set $!trusted!severity = $syslogseverity-text;
  set $!trusted!facility = $syslogfacility-text;
  set $!trusted!programname = $programname;
  foreach ($.tag in $!event.tags) do {
    set $.custommessage = $.tag;
    #if not ($.tag startswith 'ASA-' or $.tag == ["trash"]) then {
    if not ($.tag startswith 'ASA-') then {
      if ($.tag == 'json') then {
        set $.custommessage = $programname;
      }
action(type="omfile" name="tagfiles" dynafile="tagfiles" template="std" dynafilecachesize="400" ioBufferSize="16K" flushinterval="10") action(type="omfile" name="tagparsedfiles" dynafile="tagparsedfiles" template="json" dynafilecachesize="400" ioBufferSize="16K" flushinterval="10")
    }
  }
  /var/log/messages-tags;manual
  call perserver_q
  call perserver_q2
}

David Lang
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to