Solr调优参考-续

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: solr调优步骤参考这篇blog主要以实践出发,从顶到底,从大到细的思路来进一步描述,solr优化,并且是基于横向发展来说的(管理更多core),对于纵向的(core内部、搜索核心技术)。 例如分词、queryparse、分词、实时、分布式的优化、排序等偏轻! 文章有不合理,或者错误的请及时反馈
solr调优步骤参考
这篇blog主要以实践出发,从顶到底,从大到细的思路来进一步描述,solr优化,并且是基于横向发展来说的(管理更多core),对于纵向的(core内部、搜索核心技术)。

例如分词、queryparse、分词、实时、分布式的优化、排序等偏轻!
文章有不合理,或者错误的请及时反馈给鹰缘。

1. 最重要、最影响系统整体稳定和吞吐量(针对业务总索引布局优化)
毫无疑问数据的分区管理、扩容是入口。另外,对于长尾应用,就是大量的小搜索接入,此时管理平台是瓶颈。


参考建议1:
将数据分片,对于solr就是分多core,能细尽量细,单个solr instance上部署core。
保守数据,单coredocument数量控制在2000w以内。
真实场景:4g
memory上日常环境,单core的数据量不大,部署了34个core,没有出啥问题。真实物理机上部署过24core,单core超过6G的索引。

参考建议2:
如果可以,建索引和查询服务器独立开来,最好的方式是前后排,不行的话就弄个集中build。
前后排是最完美了,集中build在索引同步和core切换依然对线上查询有一定影响。

参考建议3:
全量索引构建和索引查询甚至可以分开优化,构建索引的引擎可以特殊调节参数,加速索引的构建。例如,并行document,单线程write
document,而多份数据同时运行,之后merger等。极端的可以采取C++ 版构建索引,前提是索引结构要一致。

参考建议4:
流式传输。索引本身就是基于segment的分片,便于增量,增量到一定程度支持merger为更大片增量。完全可以实习流式的segment级别的索引同步,要求一个可靠的传输协议。solr
目前基于commitpoint点的增量传输还可以进一步优化。

2.针对core的优化(针对单索引优化)
core的优化首先看schema的设置。

参考建议1:
schema的字段,要每个字段每个字段去细扣。
能不stored的,将stored=false。多个需要stored的,可以考虑组成新的doc,存储到数据库,索引存共同id

能合并的,合并。合并的字段,例如属性类似的,可以考虑空格分开,然后term查询。
long short int的类型,统一使用trie类型。
如果文本排序很弱,全部text类型去掉频率位置信息,索引体积、性能有一定提升
对应时间、url等类型,执行转化、压缩,减少文本和索引相

参考建议2:
单core里面分多子目录,solr里面能针对多子目录做快速定位查询的。

参考建议3:
core可以共享index目录的,可以尝试多个core,共享相同索引目录。不同core处理一类特征请求,并针对性缓存相关信息。

3.针对query优化(针对单索引读优化)
query中能简单,尽量简单。fq使用的话,一定要配置相关cache,cache命中率反应参数大小。

参考建议1:
fq尽管可以缓存,建议fq的粒度尽量大的同时能与其他query共享。fq的FastLRUcache
值在追求命中率的同时,需要平衡gc,cache大了 gc会很频繁。
对应实时索引更新的,cache建议不要开了,频繁的reopen会导致cache的频繁迁移,实际效果不好。
facet的,这个值是lucene里面用到,能开大尽量开大,对gc尤其影响明显。慎重参数值。
在准确性上,queryparse建议使用dismax,除非对排序不是特别要求,要看具体业务,可以采取boolean 查询。
优先使用dismax,次之phrasequery,再次之booleanquery。

参考建议2:
大区间、多OR、多AND等查询,需要针对性优化。优化上次尽量与solr统一,尤其是cache的统一,底层尽量往luceneAPI靠近,尽量减少IO、充分发挥cache、减少不必要的中间解析。需要兼顾相关度有时候。

参考建议3:
如果有些数据的读写非常特别,不妨领出来,单独对象处理。例如放到本地cache中。

4.针对系统配置
主要是基础环境的选择。
参考建议1:
JVM heap不是越大越好,要兼顾gc。新生代从小值开始,逐步增大到合适。让old去空间大些,perm去两值相同
在8g及以上,务必使用CMS,cms的各参数也需要微调
极端情况,可以尝试关闭swapoff
在GC配置同时,关注cache的配置,cache往往在开启后,占住大量内存。

参考建议2:
tomcat、jetty尽量使用轻量级容器。

相关文章
|
5月前
|
移动开发 安全 API
VMware vCenter Server 7.0U3u 发布 - 集中管理 vSphere 环境
VMware vCenter Server 7.0U3u 发布 - 集中管理 vSphere 环境
194 0
VMware vCenter Server 7.0U3u 发布 - 集中管理 vSphere 环境
|
安全 开发者
《源于支付宝的人脸认证:速度快、体验好、通过率高》
《源于支付宝的人脸认证:速度快、体验好、通过率高》
589 1
ArcGIS:如何对要素类进行查询要素属性、更改符号、标记?
ArcGIS:如何对要素类进行查询要素属性、更改符号、标记?
548 1
|
机器学习/深度学习 新零售 人工智能
案例酷丨1688平台:场景服务赋能金融普惠,让交易更安心
案例酷丨1688平台:场景服务赋能金融普惠,让交易更安心
1211 0
|
弹性计算 负载均衡 并行计算
实战案例分析:ECS在电商和大数据领域的应用
本文通过实际案例分析,深入探讨了云服务器ECS在电子商务和大数据领域的应用。在电子商务网站部署方面,我们介绍了如何使用ECS构建稳定的电商平台,包括弹性伸缩和负载均衡的实践。通过示例代码,读者可以了解如何创建ECS实例、配置负载均衡器,以及设置自动伸缩策略,以应对不同流量情况。
688 1
|
人工智能 文字识别 数据安全/隐私保护
ABBYY FineReader16最新版图片文字识别工具功能介绍
ABBYY FineReader16是一款功能强大的OCR识别软件,也是abbyy finereader系列的全新推出的版本。ABBYY FineReader能够帮助用户提高处理文档时的业务生产力,还提供强大且易用的工具来访问纸质文档和PDF中的信息。
1713 0
|
运维 监控 安全
多监控系统产生的告警如何高效管理-运维事件中心
阿里云运维事件中心作为数字化运营企业业务连续性的一站式运维管理平台,提供丰富的监控集成、强大的报警降噪、可靠的通知、灵活的事件流转、基于ITIL的故障管理等功能,帮助企业完成数字化管理。
897 0
多监控系统产生的告警如何高效管理-运维事件中心
|
弹性计算 缓存 算法
阿里云服务器u12核4G配置通用算力ecs.u1-c1m2.large实例性能详解
阿里云服务器u1通用算力ecs.u1-c1m2.large实例2核4G配置性能详解
747 0
阿里云服务器u12核4G配置通用算力ecs.u1-c1m2.large实例性能详解
|
Web App开发 缓存 Cloud Native
Serverless 年终技术盘点 :工业、学术、社区遍地开花,国内厂商迅速卡位
预计 2021 年,将会有大量主流企业的核心应用,从原来的主机架构迁移到 Serverless 架构。
|
存储 网络协议 安全
部署iSCSI网络存储
一、iSCSI介绍 ISCSI技术实现了物理硬盘设备与TCP/IP网络协议的相互结合,使得用户可以通过互联网方便地访问远程机房提供的共享存储资源。 主要作用:通过以太网远程挂载服务硬盘
629 0
部署iSCSI网络存储

热门文章

最新文章