On 1/5/2018 5:33 AM, Markus Jelsma wrote:
Another collection, now on 7.1, also shows this problem and has default TMP 
settings. This time size is different, each shard of this collection is over 40 
GB, and each shard has about 50 % deleted documents. Each shard's largest 
segment is just under 20 GB with about 75 % deleted documents. After that are a 
few five/six GB segments with just under 50 % deleted documents.

What do i need to change to make Lucene believe that at least that twenty GB 
and three month old segment should be merged away. And how what would the 
predicted indexing performance penalty be?

Quick answer: Erick's statements in the previous thread can be summarized as this:  On large indexes that do a lot of deletes or updates, once you do an optimize, you have to continue to do optimizes regularly, or you're going to have this problem.

TL;DR:

I think Erick covered most of this (possibly all of it) in the previous thread.

If you've got a 20GB segment and TMP's settings are default, then that means at some point in the past, you've done an optimize.  The default TMP settings have a maximum segment size of 5GB, so if you never optimize, then there will never be a segment larger than 5GB, and the deleted document percentage would be less likely to get out of control.  The optimize operation ignores the maximum segment size and reduces the index to a single large segment with zero deleted docs.

TMP's behavior with really big segments is apparently completely as the author intended, but this specific problem wasn't ever addressed.

If you do an optimize once and then don't ever do it again, any very large segments are going to be vulnerable to this problem, and the only way (currently) to fix it is to do another optimize.

See this issue for a more in-depth discussion and an attempt to figure out how to avoid it:

https://issues.apache.org/jira/browse/LUCENE-7976

Thanks,
Shawn

Reply via email to