alfresco - Alfresco 搜索服务的搜索性能问题
问题描述
我们正在尝试将使用 solr4 的 Alfresco CE 系统从 5.2 迁移到使用 Alfresco Search Services 的 Alfresco 6.1(我们尝试了 1.3 和 1.4),但是使用 Alfresco Search Services / Solr6 我们面临着巨大的性能问题:在类似设置上运行的搜索需要 3- 5 倍长。
一些背景:
- Alfresco 5.2 / solr4 在 Ubuntu 16 / OracleJdk 8 上运行
- Alfresco 6.1 / ASS 1.4 在 Ubuntu 18 上运行 / 采用 OpenJDK 11
- 存储库和 ASS 在专用服务器上运行(不涉及 docker)
- solr 索引存储在速度非常快的 ssd SAN ext4 设备上,对于随机和顺序访问/IOPS 数量没有问题
- 所有盒子都有 8 个内核,16 GB RAM
- 所有盒子都有 12 GB 堆空间的 jvm
- 两个 solr 版本的缓存配置相同
- 两个 solr 版本具有相同的内存配置
- solr 文档数量:~ 7,000,000
我们可以观察到:
- 搜索诸如 alfresco、christmas 等简单的词... Alfresco 5.2/solr4 在 ~1-2 秒内返回一个尚未缓存的结果
- 搜索 alfresco、christmas 等简单的词... Alfresco 6.1/solr6 在 ~7-15 秒内返回一个尚未缓存的结果
- Alfresco 5.2/solr4 在 solr admin ui 中显示使用约 9 个 12 GB 堆空间
- Alfresco 6.1/solr6 在 solr admin ui 中显示使用约 3 个 12 GB 堆空间
我们已经尝试在不改变搜索性能的情况下增加 RAM、堆空间、CPU。我想知道为什么 sol46/ASS 占用这么少的堆空间。
有没有人有类似的经历?
我们应该怎么做才能获得更可接受的响应时间?
我还尝试在 solr6 中配置分片(不相信这可以解决真正的问题),但在 Alfresco 6.1 CE接缝中创建 Solr 分片也不起作用。
解决方案
它指出搜索性能问题是由社区修复本地化限制(通过添加locale = '*'
搜索查询)引起的。
相反,应该始终使用默认未设置的跨区域设置属性创建索引。例如在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
请查看https://github.com/Alfresco/SearchServices/issues/234了解更多详情。
推荐阅读
- java - 使用 Windows 应用服务计划部署到 Azure 应用服务时,Java Web 应用不响应 HTTP 请求
- api - 赛普拉斯 - 无法获取响应标头 - API 自动化
- swift - 如何在 SwiftUI 中单击按钮时动态添加表单组?
- python - 访问在python bs中通过url传递的变量
- mysql - 如何将文本列转换为日期时间 MYSQL
- ethereum - 从币安智能链创建或克隆智能合约。愿意花点钱学习
- pytorch - 如何将 data_parallel 模型移动到特定的 cuda 设备?
- reactjs - React:调用父挂钩导致子无法安全渲染
- laravel - 使用 Laravel 进行 Firebase 身份验证
- wordpress - 从 Orchard CMS 迁移到 Wordpress CMS