bq: are you simply flagging the fact that we wouldn't direct the queries to A v. B v. C since SolrCloud will make the decisions itself as to which part of the distro gets hit for the operation
Yep. SolrCloud takes care of it all itself. I should also add that there are about a zillion metrics now available in Solr that you can use to make the best use of hardware, including things like CPU usage, I/O, GC etc. SolrCloud doesn't _yet_ make use of these but will in future. The current software LB does a pretty simple round-robin distribution. Best, Erick On Wed, Apr 11, 2018 at 5:57 AM, John Blythe <johnbly...@gmail.com> wrote: > thanks, erick. great info. > > although you can't (yet) direct queries to one or the other. So just making >> them all NRT and forgetting about it is reasonable. > > > are you simply flagging the fact that we wouldn't direct the queries to A > v. B v. C since SolrCloud will make the decisions itself as to which part > of the distro gets hit for the operation? if not, can you expound on this a > bit more? > > The very nature of merging is such that you will _always_ get large merges >> until you have 5G segments (by default) > > > bummer > > Quite possible, but you have to route things yourself. But in that case >> you're limited to one machine to handle all your NRT traffic. I skimmed >> your post so don't know whether your NRT traffic load is high enough to >> worry about. > > > ok. i think we'll take a two-pronged approach. for the immediate purposes > of trying to solve an issue we've begun encountering we will begin > thoroughtesting the load between various operations in the master-slave > setup we've set up. pending the results, we can roll forward w a temporary > patch in which all end-user touch points route through the primary box for > read/write while large scale operations/processing we do in the background > will point to the ELB the slaves are sitting behind. we'll also begin > setting up a simple solrcloud instance to toy with per your suggestion > above. inb4 tons more questions on my part :) > > thanks! > > -- > John Blythe > > On Tue, Apr 10, 2018 at 11:14 AM, Erick Erickson <erickerick...@gmail.com> > wrote: > >> bq: should we try to bite the solrcloud bullet and be done w it >> >> that's what I'd do. As of 7.0 there are different "flavors", TLOG, >> PULL and NRT so that's also a possibility, although you can't (yet) >> direct queries to one or the other. So just making them all NRT and >> forgetting about it is reasonable. >> >> bq: is there some more config work we could put in place to avoid ... >> commit issue and the ultra large merge dangers >> >> No. The very nature of merging is such that you will _always_ get >> large merges until you have 5G segments (by default). The max segment >> size (outside "optimize/forceMerge/expungeDeletes" which you shouldn't >> do) is 5G so the steady-state worst-case segment pull is limited to >> that. >> >> bq: maybe for our initial need we use Master for writing and user >> access in NRT events, but slaves for the heavier backend >> >> Quite possible, but you have to route things yourself. But in that >> case you're limited to one machine to handle all your NRT traffic. I >> skimmed your post so don't know whether your NRT traffic load is high >> enough to worry about. >> >> The very first thing I'd do is set up a simple SolrCloud setup and >> give it a spin. Unless your indexing load is quite heavy, the added >> work the NRT replicas have in SolrCloud isn't a problem so worrying >> about that is premature optimization unless you have a heavy load..... >> >> Best, >> Erick >> >> On Mon, Apr 9, 2018 at 4:36 PM, John Blythe <johnbly...@gmail.com> wrote: >> > Thanks a bunch for the thorough reply, Shawn. >> > >> > Phew. We’d chosen to go w Master-slave replication instead of SolrCloud >> per >> > the sudden need we had encountered and the desire to avoid the nuances >> and >> > changes related to moving to SolrCloud. But so much for this being a more >> > straightforward solution, huh? >> > >> > Few questions: >> > - should we try to bite the solrcloud bullet and be done w it? >> > - is there some more config work we could put in place to avoid the soft >> > commit issue and the ultra large merge dangers, keeping the replications >> > happening quickly? >> > - maybe for our initial need we use Master for writing and user access in >> > NRT events, but slaves for the heavier backend processing. Thoughts? >> > - anyone do consulting on this that would be interested in chatting? >> > >> > Thanks again! >> > >> > On Mon, Apr 9, 2018 at 18:18 Shawn Heisey <apa...@elyograg.org> wrote: >> > >> >> On 4/9/2018 12:15 PM, John Blythe wrote: >> >> > we're starting to dive into master/slave replication architecture. >> we'll >> >> > have 1 master w 4 slaves behind it. our app is NRT. if user performs >> an >> >> > action in section A's data they may choose to jump to section B which >> >> will >> >> > be dependent on having the updates from their action in section A. as >> >> such, >> >> > we're thinking that the replication time should be set to 1-2s (the >> >> chances >> >> > of them arriving at section B quickly enough to catch the 2s gap is >> >> highly >> >> > unlikely at best). >> >> >> >> Once you start talking about master-slave replication, my assumption is >> >> that you're not running SolrCloud. You would NOT want to try and mix >> >> SolrCloud with replication. The features do not play well together. >> >> SolrCloud with NRT replicas (this is the only replica type that exists >> >> in 6.x and earlier) may be a better option than master-slave >> replication. >> >> >> >> > since the replicas will simply be looking for new files it seems like >> >> this >> >> > would be a lightweight operation even every couple seconds for 4 >> >> replicas. >> >> > that said, i'm going *entirely* off of assumption at this point and >> >> wanted >> >> > to check in w you all to see any nuances, gotchas, hidden landmines, >> etc. >> >> > that we should be considering before rolling things out. >> >> >> >> Most of the time, you'd be correct to think that indexing is going to >> >> create a new small segment and replication will have little work to do. >> >> But as you create more and more segments, eventually Lucene is going to >> >> start merging those segments. For discussion purposes, I'm going to >> >> describe a situation where each new segment during indexing is about >> >> 100KB in size, and the merge policy is left at the default settings. >> >> I'm also going to assume that no documents are getting deleted or >> >> reindexed (which will delete the old version). Deleted documents can >> >> have an impact on merging, but it will usually only be a dramatic impact >> >> if there are a LOT of deleted documents. >> >> >> >> The first ten segments created will be this 100KB size. Then Lucene is >> >> going to see that there are enough segments to trigger the merge policy >> >> - it's going to combine ten of those segments into one that's >> >> approximately one megabyte. Repeat this ten times, and ten of those 1 >> >> megabyte segments will be combined into one ten megabyte segment. >> >> Repeat all of THAT ten times, and there will be a 100 megabyte segment. >> >> And there will eventually be another level creating 1 gigabyte >> >> segments. If the index is below 5GB in size, the entire thing *could* >> >> be merged into one segment by this process. >> >> >> >> The end result of all this: Replication is not always going to be >> >> super-quick. If merging creates a 1 gigabyte segment, then the amount >> >> of time to transfer that new segment is going to depend on how fast your >> >> disks are, and how fast your network is. If you're using commodity SATA >> >> drives in the 4 to 10 terabyte range and a gigabit network, the network >> >> is probably going to be the bottleneck -- assuming that the system has >> >> plenty of memory and isn't under a high load. If the network is the >> >> bottleneck in that situation, it's probably going to take close to ten >> >> seconds to transfer a 1GB segment, and the greater part of a minute to >> >> transfer a 5GB segment, which is the biggest one that the default merge >> >> policy configuration will create without an optimize operation. >> >> >> >> Also, you should understand something that has come to my attention >> >> recently (and is backed up by documentation): If the master does a soft >> >> commit and the segment that was committed remains in memory (not flushed >> >> to disk), that segment will NOT be replicated to the slaves. It has to >> >> get flushed to disk before it can be replicated. >> >> >> >> Thanks, >> >> Shawn >> >> >> >> -- >> > John Blythe >>