On 3/11/2013 3:52 PM, jimtronic wrote:
The load test was fairly heavy (ie lots of users) and designed to mimic a
fully operational system with lots of users doing normal things.

There were two things I gleaned from the logs:

PERFORMANCE WARNING: Overlapping onDeckSearchers=2 appeared for several of
my more active cores

and

The non-leaders were throwing errors saying that the leader as not
responding while trying to forward updates. (sorry can't find that specific
error now)

My best guess is that it has something to do with the commits.

  a. frequent user generated writes using
/update?commitWithin=500&waitFlush=false&waitSearcher=false
  b. softCommit set to 3000
  c. autoCommit set to 300,000 and openSearcher false
  d. I'm also doing frequent periodic DIH updates. I guess this is
commit=true by default.

Should I omit commitWithin and set DIH to commit=false and just let soft and
autocommit do their jobs?

I've just locate a previous message on this list from Mark Miller saying that in Solr 4, commitWithin is a soft commit.

You should definitely wait for Mark or another committer to verify what I'm saying in the small novel I am writing below.

My personal opinion is that you should have frequent soft commits (auto, manual, commitWithin, or some combination) along with less frequent (but not infrequent) autoCommit with openSearcher=false. The autoCommit (which is a hard commit) does two things - ensures that the transaction logs do not grow out of control, and persists changes to disk. If you have auto soft commits and updateLog is enabled, I would say that you are pretty safe using commit=false on your DIH updates.

If Mark agrees with what I have said, and your config/schema checks out OK with expected norms, you may be running into bugs. It might also be a case of not enough CPU/RAM resources for the system load. You never responded in another thread with the output of the 'free' command, or the size of your indexes. Putting 13 busy Solr cores onto one box is overkill, unless the machine has 16-32 CPU cores *and* plenty of fast RAM to cache all your indexes in the OS disk cache. Based on what you're saying here and in the other thread, you probably need a java heap size of 4GB or 8GB, heavily tuned JVM garbage collection options, and depending on the size of your indexes, 16GB may not be enough total system RAM.

IMHO, you should not use trunk (5.0) for anything that you plan to one day run in production. Trunk is very volatile, large-scale changes sometimes get committed with only minimal testing. The dev branch named branch_4x (currently 4.3) is kept reasonably stable almost all of the time. Version 4.2 has just been released - it is already available on the faster mirrors and there should be a release announcement within a day from now.

If this is not being set up in anticipation for a production deployment, then trunk would be fine, but bugs are to be expected. If the same problems do not happen in 4.2 or branch_4x, then I would move the discussion to the dev list.

Thanks,
Shawn

Reply via email to