I have had to fix a few issues with AAF in order to get it working  
well for myself in a production environment.  I'm using the latest  
"release" version which is 0.4.1:

1) When there is no index in place, every request starts a new  
rebuild.  While there is some code in place to allow this to happen  
during testing, personally I see no reason to even test for this,  
although maybe it's necessary for those using multiple indexes (?).   
At the very least, the same index should never be built twice at the  
same time I hope, so I put in rudimentary code that just locks until  
the index is complete on a request.

The real problem is that all the rebuilds use the same FERRET_INDEX/ 
rebuild path, which causes the dRB server to core dump and massive  
CPU load as two reindexes are running and files are replaced  
underneath them.  This may be the reason for a lot of stability  
complaints, as I think a lot of people just remove their index  
instead of calling rebuild.

2) Performance degrades when I index articles until I call optimize  
on the index.  Optimize can take many seconds and seems to lock all  
access via the dRb server.  I added logic to use a separate index for  
modifications (adds/deletes) and optimizations.  It required  
significant hacking of the AAF plug-in.  I basically have a writable  
index that is then copied each time to a new read-only index  
location, followed by changing the index_dir in AAF to the new read- 
only index.  This prevents the slowdown during indexing, but  
everything still seems to lock during optimizations.  I have a faster  
server now, so optimizations only take around 6 seconds.  I may have  
to use a separate dRb server to do the optimizations.  I am not sure  
where this locking occurs.  I would like to see aaf take take or this  
locking issue somehow.

None of the above are ready to be checked in publicly but I'd be  
happy to send a patch if someone wants to base some work on it.

Other than these issues, aaf/ferret have been excellent, and  
basically "just worked".  I am able to handle around 40 requests per  
second, including rendering a results page.  I haven't finished  
performance testing as that is more than enough performance for me  
right now.

-Alex

_______________________________________________
Ferret-talk mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ferret-talk

Reply via email to