Either I'm missing something obvious, or there is a regression between 7.4
and 7.6 in how disk assisted queues operate under load.

After upgrading from the Debian package 7.4.8-1~bpo70+1 to
7.6.3-2~bpo70+1, I noticed that while data is spooled to disk when a
destination is backlogged, the data is never reloaded from the disk queue.

Stats output:
rsyslogd-pstats:action 7 queue[DA]: size=165256 enqueued=173248 full=0
discarded.full=0 discarded.nf=0 maxqsize=165488
rsyslogd-pstats:action 7 queue: size=1023 enqueued=100094084 full=0
discarded.full=0 discarded.nf=0 maxqsize=57840

Action configuration:
$WorkDirectory /var/spool/rsyslog  # default location for work (spool)
files              
                   
$ActionQueueType FixedArray   # Preallocate memory for the queue
                   
                   
$ActionQueueFileName logstash  # set file name, also enables disk mode
                   
                   
$ActionResumeRetryCount -1    # infinite retries on insert failure
                   
                   
$ActionQueueCheckpointInterval 10000 # Checkpoint once every 10000 records
                   
                   
$ActionQueueSize               64000
$ActionQueueHighWaterMark 57600 # Start spooling to disk
                   
                   
$ActionQueueLowWaterMark  44800 # Stop spooling to disk
                   
                   
$ActionQueuediscardMark  63000 # Start throwing away data
                   
                   
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down
                   
                   
$ActionQueueDequeueBatchSize 1000

if $inputname != "imtcp" then {
   *.* @@rsyslog1:6514;ls_json
}

Since I have the low water mark set to 44800, and the current in-memory
queue size was 1023, I would expect to see data being loaded from the
queue, but the size of the on-disk queue stays steady.

Queue info file:
<OPB:1:qqueue:1:
+iQueueSize:2:6:846096:
+tVars.disk.sizeOnDisk:2:9:706319606:
>End
.
<Obj:1:strm:1:
+iCurrFNum:2:3:825:
+pszFName:1:8:logstash:
+iMaxFiles:2:8:10000000:
+bDeleteOnClose:2:1:0:
+sType:2:1:1:
+tOperationsMode:2:1:2:
+tOpenMode:2:3:384:
+iCurrOffs:2:6:281576:
+inode:2:1:0:
>End
.
<Obj:1:strm:1:
+iCurrFNum:2:3:821:
+pszFName:1:8:logstash:
+iMaxFiles:2:8:10000000:
+bDeleteOnClose:2:1:1:
+sType:2:1:1:
+tOperationsMode:2:1:1:
+tOpenMode:2:3:384:
+iCurrOffs:2:6:754561:
+inode:2:1:0:
>End
.

If I understand the queue info file, then data files 821-825 should be in
use, but there are currently 683 data files in the directory, with serial
numbers from 2 through 833, with a number of gaps in the sequence.

I didn't see this behavior under 7.4; did I make a stupid mistake with the
config, or is something else going on?


-Jeff

_______________________________________________
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