Search code examples
alfrescoalfresco-search-services

Search performance problems with Alfresco Search Services


We are trying to migrate an Alfresco CE system from 5.2 with solr4 to Alfresco 6.1 with Alfresco Search Services (we tried 1.3 and 1.4) but we are facing massive performance problems using Alfresco Search Services / Solr6: Searches running on a similar setup take 3-5 x longer.

Some background:

  • Alfresco 5.2 / solr4 is running on Ubuntu 16 / OracleJdk 8
  • Alfresco 6.1 / ASS 1.4 is running on Ubuntu 18 / Adopt OpenJDK 11
  • Repository and ASS are running on dedicated servers (no docker involved)
  • solr index is stored on a very fast ssd SAN ext4 device having no issues for random and sequential access / number of IOPS
  • all boxes have 8 cores, 16 GB RAM
  • all boxes have jvm with 12 GB heap space
  • both solr versions have the same configuration for caches
  • both solr versions have the same memory configuration
  • number of solr docs: ~ 7,000,000

What we could observe:

  • searching for simple words like alfresco, christmas, ... Alfresco 5.2/solr4 returns a not already cached result in ~1-2 sec
  • searching for simple words like alfresco, christmas, ... Alfresco 6.1/solr6 returns a not already cached result in ~7-15 sec
  • Alfresco 5.2/solr4 shows in solr admin ui to use ~9 of 12 GB heap space
  • Alfresco 6.1/solr6 shows in solr admin ui to use ~3 of 12 GB heap space

We already tried to increase RAM, heap space, CPU without any change in the search performance. I wonder why sol46/ASS consumes so little heap space.

Does anybody have similar experience?

What should we do to get more acceptable response times?

I also tried to configure sharding in solr6 (without being convinced that this solves the real problem) but Creating Solr shards in Alfresco 6.1 CE seams not to work either.


Solution

  • it pointed out that the search performance issue was caused by a fix from the community to work around localization restrictions (by adding locale = '*' in the search query).

    Instead the index should be always created with cross locale properties which is not set by default. e.g. in shared.properties

    # Data types that support cross locale/word splitting/token patterns if tokenised
    alfresco.cross.locale.datatype.0={http://www.alfresco.org/model/dictionary/1.0}text
    alfresco.cross.locale.datatype.1={http://www.alfresco.org/model/dictionary/1.0}content
    alfresco.cross.locale.datatype.2={http://www.alfresco.org/model/dictionary/1.0}mltext
    

    please check https://github.com/Alfresco/SearchServices/issues/234 for more details.