Hello again astralbodies,
keep in mind that distribution might be more memory efficient, but when you're strongly read-most like in the Lucene case it's actually better to use replication: if you can keep it all in the memory of each node, then searches (and some write operations too) will be more efficient.
Also using L1 introduces additional locking and invalidation messages.
For these reasons we had the Lucene indexes cache support three different caches, and use each of them for different purposes: the
LuceneIndexesMetadata and
LuceneIndexesLocking are being used by very tiny values, so it's better to disable L1 and use REPL instead of DIST.
The
LuceneIndexesData could use either REPL or DIST, depending on your memory/network.. try both, but especially try DIST without L1 as it acquires locks on read operations which are very bad for Lucene's data access patterns; If you have enough free memory that you're looking into L1, you might want to try a DIST with a higher number of numOwners .. the more, the higher the likelyhood for a specific node to have the needed values already in local memory.
Quote:
<jmxStatistics enabled="true" />
This might slow it down a bit; if you don't strictly need it, disable it. Or let's start tuning without it, and reintroduce it later.
Quote:
<indexing enabled="true" indexLocalOnly="true"/>
This is wrong! I guess I should write this down in red on the guide. the <indexing> tag is needed to index the values you're storing in the grid, but not needed (and harmfull for performance!) to store an index.
Quote:
We had to stop using JTA in JBoss EAP 5.0 because it wasn't playing well with our Spring-based Hibernate/Hibernate Search app. We want to move to JBoss AS 7.0 (eventually EAP 6) so we can get back to using JTA. That's really the only thing in this config that I see as a glaring issue; the transactionManagerLookupClass may need to be the HibernateTransactionManagerLookup which will find the Spring local transaction.
Make sure Hibernate Search and Spring are using the same transaction manger (whatever that's JTA, the local transaction, or any other TM) or you'll face weird issues.
You're already using exclusive indexing and tuned the Lucene parameters to not flush too often? Which version of Hibernate Search?