Hot off the press and ready to download from the Seq site.
Seq 2.4 is largely a maintenance release with a host of bug fixes, but amongst those are some substantial improvements.
Filtering performance improvements
Seq implements its own query engine (soon to get some interesting new capabilities ;-)) optimized for the kind of messy, ad-hoc filtering that we do over log data. Based on the kinds of queries generated through real-world use of the 2.0 “signals” feature, two great little optimizations have landed in 2.4.
First, an overdue implementation of short-circuiting
&& (AND) and
|| (OR). This just means that the expression
@Level == "Error" && Environment == "UAT" won’t bother evaluating the second comparison if the first one is
false. Seq has always done some short-circuiting in queries, but only in certain cases. 2.4 extends this to all logical operations.
Second, and closely related, is term reordering based on expected execution cost. Some predicates are extremely cheap and others costly, for example an event type comparison (
$FEE7C01D) can be evaluated several thousand times faster than a full-document text search (
Contains(@Document, "penguin"). This means that, given short-circuiting operations,
$FEE7C01D && Contains(@Document, "penguin") is much more efficient than the reverse
Contains(@Document, "penguin") && $FEE7C01D in the common case of mostly-negative results. Seq 2.4 uses heuristics to weigh up the relative execution cost of each branch of an expression to make sure the fastest comparisons are performed first.
Both of these changes add up to substantial gains when using signals with a large number of applied filters.
Since Seq uses the signal mechanism for retention processing, it’s possible that an accidental change to a signal used in retention processing could lead to data loss. For this reason Seq 2.4 introduces lockable signals, requiring administrative privileges to modify.
Seq uses the ESENT storage engine to manage files on disk. It’s an amazing piece of technology and very mature, however until recently was unable to support compaction of data files during operation. Although retention policies would remove events from the file, Seq would periodically need to take a slice of the event stream offline to free the empty space in the file, and this process copies the old file into a new one. Mostly this background operation would be quick and transparent, but on heavily loaded servers the disk space and I/O required would sometimes significantly impact performance.
The new version 2.4, when running on a capable operating system (Windows 8.1+ or Server 2012 R2+), now takes advantage of ESENT’s sparse file support to perform compaction in real time, spreading out the load and avoiding additional disk usage and I/O spikes.
You can download the new version here on the Seq website.
Happy logging! :-)