设为首页 收藏本站
查看: 1613|回复: 0

[经验分享] Solr调优参考-续

[复制链接]

尚未签到

发表于 2018-11-2 06:19:24 | 显示全部楼层 |阅读模式
  solr调优步骤参考
  这篇blog主要以实践出发,从顶到底,从大到细的思路来进一步描述,solr优化,并且是基于横向发展来说的(管理更多core),对于纵向的(core内部、搜索核心技术)。
  例如分词、queryparse、分词、实时、分布式的优化、排序等偏轻!
  文章有不合理,或者错误的请及时反馈给鹰缘。
  1.最重要、最影响系统整体稳定和吞吐量(针对业务总索引布局优化)
  毫无疑问数据的分区管理、扩容是入口。另外,对于长尾应用,就是大量的小搜索接入,此时管理平台是瓶颈。
  参考建议1:
  将数据分片,对于solr就是分多core,能细尽量细,单个solrinstance上部署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查询。
  longshortint的类型,统一使用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:
  JVMheap不是越大越好,要兼顾gc。新生代从小值开始,逐步增大到合适。让old去空间大些,perm去两值相同
  在8g及以上,务必使用CMS,cms的各参数也需要微调
  极端情况,可以尝试关闭swapoff
  在GC配置同时,关注cache的配置,cache往往在开启后,占住大量内存。
  参考建议2:
  tomcat、jetty尽量使用轻量级容器。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629510-1-1.html 上篇帖子: 开源搜索引擎solr4.0+tomcat7实现中文分词 下篇帖子: 基于tomcat的solr4.0集群部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表