Bernd:

If you only knew how many times I've had the conversation "No, I can't
tell you what's best, you have to test with _your_ data on _your_
hardware with _your_ queries"  ;)

I suspect, but have no real proof, that GC is the biggest difference,
Solr has we call "the laggard problem". Since one replica from each
shard _must_ respond (twice) before the query returns, the slowest
replica to respond governs the total response for any individual
query. But that's a guess. The CPU utilization might give a clue, but
if it is GC then some of the CPU cycles are being used for GC, so that
isn't definitive.

Best,
Erick
On Tue, Aug 28, 2018 at 12:37 AM Bernd Fehling
<bernd.fehl...@uni-bielefeld.de> wrote:
>
> Yes, I tested many cases.
> As I already mentioned 3 Server as 3x3 SolrCloud cluster.
> - 12 Mio. data records from our big single index
> - always the same queries (SWD, german keyword norm data)
> - Apache jmeter 3.1 for the load (separate server)
> - Haproxy 1.6.11 with roundrobin (separate server)
> - no autowarming in solr
> - always with any setup, one first (cold) run (to see how the system behaves 
> with empty caches)
> - afterwards two (warm) runs with filled caches from first and second run
> - all this with preferLocalShards set to true and false
> - and all this with single instance multicore and multi instance multinode.
> That was a lot of testing, starting, stopping, loading test data...
>
> The difference between single instance and multi instance was that
> single instance per server got 12GB JAVA heap (because it had to handle 3 
> cores)
> and multi instance got 4GB JAVA heap per instance (because each instance had 
> to handle just 1 core).
>
> No real difference in CPU/memory utilization, but I used different
> heap size between single instance and multi instance (see above).
> But the response time with multi instance is much better and gives higher 
> performance.
> Between 30 and 60 QPS multi instance is about 1.5 times better than single 
> instance
> in my test case with my test data ... and so on, but the Cloud is much more 
> complex.
>
> preferLocalShards really gives advantage in 3x3 or 5x5 SolrCloud but I don't
> know how it would compare to say 5x3 (5 server, 5 shards, 3 replicas).
>
> Servers in total:
> - 3 VM server on 3 different XEN hosts connected with 2 Gigabit Networks
>    (the discs were not SSD as in our production system, just 15rpm spinning 
> discs)
>    3 zookeeper, one on each server but separate instances (not the solr 
> internal ones)
> - 1 extra server for haproxy
> - 1 extra server for Apache jmeter
>
> It's hard to tell where the bottleneck is, at least not with 60QPS and with 
> spinning discs.
> SSD as storage and separate physical server boxes will increase performance.
>
> I think the matter is how complex is your data in the index, your query and 
> query analysis.
> My query not very easy, rows=100, facet.limit=100, 9 facet.fields and a boost 
> with bq.
> If you have rows=10 and facet=false without bq you will get higher 
> performance.
>
> Regards
> Bernd
>
>
> Am 27.08.2018 um 22:45 schrieb Wei:
> > Thanks Bernd.  Do you have preferLocalShards=true in both cases? Do you
> > notice CPU/memory utilization difference between the two deployments? How
> > many servers did you use in total?  I am curious what's the bottleneck for
> > the one instance and 3 cores configuration.
> >
> > Thanks,
> > Wei
> >
> > On Mon, Aug 27, 2018 at 1:45 AM Bernd Fehling <
> > bernd.fehl...@uni-bielefeld.de> wrote:
> >
> >> My tests with many combinations (instance, node, core) on a 3 server
> >> cluster
> >> with SolrCloud pointed out that highest performance is with multiple solr
> >> instances and shards and replicas placed by rules so that you get advantage
> >> from preferLocalShards=true.
> >>
> >> The disadvantage ist the handling of the system, which means setup,
> >> starting
> >> and stopping, setting up the shards and replicas with rules and so on.
> >>
> >> I tested with 3x3 SolrCloud (3 shards, 3 replicas).
> >> A 3x3 system with one instance and 3 cores per host could handle up to
> >> 30QPS.
> >> A 3x3 system with multi instance (different ports, single core and shard
> >> per
> >> instance) could handle 60QPS on same hardware with same data.
> >>
> >> Also, the single instance per server setup has spikes in the response time
> >> graph
> >> which are not seen with a multi instance setup.
> >>
> >> Tested about 2 month ago with SolCloud 6.4.2.
> >>
> >> Regards,
> >> Bernd
> >>
> >>
> >> Am 26.08.2018 um 08:00 schrieb Wei:
> >>> Hi,
> >>>
> >>> I have a question about the deployment configuration in solr cloud.  When
> >>> we need to increase the number of shards in solr cloud, there are two
> >>> options:
> >>>
> >>> 1.  Run multiple solr instances per host, each with a different port and
> >>> hosting a single core for one shard.
> >>>
> >>> 2.  Run one solr instance per host, and have multiple cores(shards) in
> >> the
> >>> same solr instance.
> >>>
> >>> Which would be better performance wise? For the first option I think JVM
> >>> size for each solr instance can be smaller, but deployment is more
> >>> complicated? Are there any differences for cpu utilization?
> >>>
> >>> Thanks,
> >>> Wei
> >>>
> >>
> >

Reply via email to