On 8/27/2015 3:26 AM, Toke Eskildsen wrote:
> On Thu, 2015-08-27 at 11:23 +0300, Esther Goldbraich wrote:
>> We are using GC tuning options: Xgcpolicy:gencon , verbose:gc.
>> RAM: 64GB
>> Solr heap: -Xms512m -Xmx32768m
>> Index per server: 500G

Is this in use for Solr 5.2.1 as well?  The start script for Solr 5.x
includes garbage collection tuning that has worked well for most people.

I have no idea what the "gencon" strategy actually does, and I cannot
find much information with Google.  Most of the info I can find on this
setting indicates this setting on Oracle Java is for JRockit, which is
gone in Java 7.  I suspect that it doesn't do much beyond changing which
collectors are in use.  This is *not* enough GC tuning for Solr, and if
you are running Oracle Java 7 or OpenDK 7, may not actually do anything
useful at all.  It looks like it is a valid setting on IBM Java, but
there are plenty of reasons (bugs) to never use Java from IBM.

The GC settings in the bin/solr start script included with 5.x are good,
or you can look at my wiki page for info on all the GC testing that I
have done personally:

https://wiki.apache.org/solr/ShawnHeisey

> Expecting "Your RAM size should be equal to index size"-posts to arrive
> in 3, 2, 1...

I see that I am predictable. :)

There is about 32GB left over after Java is done allocating memory for
Solr, assuming there isn't anything else on the system that requires a
significant chunk of memory, like a webserver or a database server.

Like Toke mentions, I will tell you that for *ideal* performance, your
available RAM should be equal to the index size.  In a perfect world,
you would have at least 532GB of RAM -- 32GB for Java and 500GB for
caching the index.  Since that's not a typical RAM size for a server,
call it 576GB or 640GB.

Perfection is not required for Solr, but I can tell you that 32GB of RAM
for 500GB of index will almost certainly lead to performance issues.
This most likely wouldn't be enough even if your index is on SSD.

If I couldn't achieve the dream of 512GB to run 500GB of index, I would
hope for at least 128GB of RAM for SSD storage or at least 256GB of RAM
for spinning disks, and I would not be surprised to learn that's not
enough either.

I suspect this may be the majority of why you don't see a performance
improvement with the newer Java version.  Newer versions generally have
better performance, but only if your hardware has enough resources for
the job.

Thanks,
Shawn

Reply via email to