Hello,
First the specs:
ruby 1.8.6, rails 1.2.3, ferret 0.11.4, mongrel 1.0.1, mongrel_cluster
0.2.1
And the model’s aaf config:
Ferret search engine
acts_as_ferret({:fields => {:name => {:boost => 10},
:summary => {:boost => 2},
:body => {:boost => 1, :store =>
:no},
:question => {:boost => 1, :store =>
:no},
:answer => {:boost => 1, :store =>
:no},
:status_id => {:boost => 1},
:category_id => {:boost => 1},
:published => {:boost => 1}},
:store_class_name => true,
:remote => true,
:ferret => { :analyzer => Ferret::Analysis::
StandardAnalyzer.new([]) }
} )
I’ve been wrestling with a very strange intermittent problem for a few
days
now. I’m running 3 mongrels behind an Apache 2.2 proxy balancer, and
the
aaf DRb server in production mode. I’ve been manually load testing a
search
where the query string contains a string, and also filter by fields
category_id and status_id. I change the category or status and
re-submit
the search several times.
After some random number of searches, if I send a search that should
return
some number of results, it will return no results on 1 or 2 of the
mongrels,
but the correct results on the remaining mongrel(s). So it’s like this:
refresh - no results, refresh - no results, refresh - 2 results, over &
over
in that pattern. Once this state has occurred, if I restart the DRb
server,
all will be well until I rapidly submit several more queries enough
times to
make this happen again.
I have tested this both on our RedHat-based staging server and my local
OSX
dev machine with the same exact config, and I get the same results.
Through
logging I have confirmed that the same query is received by all the
mongrels. To factor out browser-related issues, I’ve also tested by
hitting
the web server with a little looping ruby script, and it also breaks
that
way.
I’m not sure where to debug from here – can anyone point me in the
right
direction? Since a restart of the DRb server fixes the problem for a
bit,
I’m thinking it may be aaf related, but I don’t know how to isolate this
any
further so as to determine the exact cause.
Thanks,
Doug