Hey there,
I have been doing some stress with a 2 physical CPU (with 4 cores each)
server.
After some reading about GC performance tunning I have configured it this
way:

/usr/lib/jvm/java-6-sun/bin/java -server -Xms7000m -Xmx7000m
-XX:ReservedCodeCacheSize=10m -XX:NewSize=1000m -XX:MaxNewSize=1000m
-XX:SurvivorRatio=16 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:PermSize=35m
-XX:MaxPermSize=35m
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=/opt/tomcat-shard-00/common/endorsed

My java version is:
java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) 64-Bit Server VM (build 11.2-b01, mixed mode)

My index is optimized with compound file and in readOnly mode. I just have a
solr core in my Solr box.

I have launched different test against an index and for my surprise the
results are:

test1:
number of concurrent threads: 2
throughput: 15
response ms: 130

test2:
number of concurrent threads: 3
throughput: 22.3
average response ms: 130

test3:
number of concurrent threads: 4
throughput: 28
average response ms: 140

test4:
number of concurrent threads: 5
throughput: 26.8
average response ms: 190

test5:
number of concurrent threads: 6
throughput: 22
average response ms: 270

All requests are launched to the same IndexSearcher (no reloads or warmings
are done during the test)
I have activated the debug in the JVM to see when a GC happens. It is
happening every 3 seconds and it takes 20ms aprox in test1,test2,test3.
In test4 and test5 it happens every 3 seconds aswell and takes 40ms. So,
looks like GC is not delaying the average 
response time of the requests.
The machine has 4 cores and it is really not stressed in terms of CPU,
neighter IO (I am using ssd disk).

Given this scenario, how is it possible that changing from 5 concurrent
threads to 6 the average response time is almost double?
(or from 4 to 5 is not double but it still significantly more)
I think GC can't be the cause given the numbers I have mencioned.
As far as I always have understood Lucene IndexSearcher deals perfectly with
concurreny but it's seems that there's something there that blocks
when there is more that 2 requests at the same time.

Compound file optimization gives better response times but could in any way
be bad for performance?

I am so confused about this... can someone explain me if this is normal or
why does it happens? I mean, if lucene or Solr has some blocking thing?

Thanks in advance

-- 
View this message in context: 
http://old.nabble.com/Strange-performance-behaviour-when-concurrent-requests-are-done-tp27659695p27659695.html
Sent from the Solr - User mailing list archive at Nabble.com.

Reply via email to