On Fri, 2011-01-07 at 10:57 +0100, supersoft wrote:

[5 shards, 100GB, ~20M documents]

...

[Low performance for concurrent searches]

> Using JConsole for monitoring the server java proccess I checked that Heap
> Memory and the CPU Usages don't reach the upper limits so the server
> shouldn't perform as overloaded.

If memory and CPU is okay, the culprit is I/O.

Solid state Drives has more than proven their worth for random access
I/O, which is used a lot when searching with Solr/Lucene. SSD's are
plug-in replacements for harddrives and they virtually eliminate I/O
performance bottlenecks when searching. This also means shortened warm
up requirements and less need for disk caching. Expanding RAM capacity
does not scale well and requires extensive warmup. Adding more machines
is expensive and often require architectural changes. With the current
prices for SSD's, I consider them the generic first suggestion for
improving search performance.

Extra spinning disks improves the query throughput in general and speeds
up single queries when the chards are searched in parallel. They do not
help much for a single sequential searching of shards as the seek time
for a single I/O request is the same regardless of the number of drives.
If your current response time for a single user is satisfactory, adding
drives is a viable solution for you. I'll still recommend the SSD option
though, as it will also lower the response time for a single query.

Regards,
Toke Eskildsen

Reply via email to