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尽量使用轻量级容器。

转载于:https://blog.51cto.com/aliapp/1325801

Solr调优参考-续相关推荐

  1. HBase-拆分合并和调优参考

    本篇文章不是自己总结的,而是参考资料上进行摘抄的,本文涉及到HBase的Region拆分合并以及HFile拆分合并以及其他的调优参考,如果你参考本文的话,请一定在尝试之后在修改配置,本文只是自己的一个 ...

  2. CentOS7 内核版本3.10 内核参数调优参考

    查看网络上大部分内核参数文档,整理出如下内容,如有错误请指正,过程很辛苦,转载请附上原地址. 前言 常用的Linux内核参数,具体优化值要参考应用场景. 通过/var/log/message查看系统日 ...

  3. linux内核调优参考

    对于新部署的机器,需要做一些基本的调优操作,以更改一些默认配置带来的性能问题 1 修改打开文件数 root@mysql:/data/tools/db# vim /etc/security/limits ...

  4. linux 调优系列(续)

    linux 的各大发行版,都有些不必要的服务被默认开启了,针对ubuntu,我们 可以采用选择性关闭的方法加速起动,提高系统性能. 这里我们安装一个软件: sudo apt-get install s ...

  5. [转]JVM性能调优参考链接

    http://www.cnblogs.com/chen77716/archive/2010/06/26/2130807.html http://developer.51cto.com/art/2012 ...

  6. hadoop调优之一

    hadoop调优之一 @(HADOOP)[hadoop] hadoop调优之一 一概述 一硬件环境 二map任务原因 三reduce任务的原因 四hadoop的配置不当 五JAVA代码及JVM调优 一 ...

  7. hadoop调优之一:概述

    hadoop集群性能低下的常见原因 (一)硬件环境 1.CPU/内存不足,或未充分利用 2.网络原因 3.磁盘原因 (二)map任务原因 1.输入文件中小文件过多,导致多次启动和停止JVM进程.可以设 ...

  8. JVM-常用内存调优参数总结

    一.内存调整参数 -Xmx2g 设置堆内存最大值为2g -Xmx512m 设置堆内存最大值为512m -Xms1g 设置堆内存最小值1g(ps:-Xms和-Xmx实际上是 -XX:InitialHea ...

  9. JVM调优-调优原则与思路

    一.实施过程中的原则 在调优之前,我们需要记住下面的原则: 1.在应用上线之前,先考虑将机器的JVM参数设置到最优(最适合). 2.多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码 ...

最新文章

  1. vue-threeJS数据驱动的三维图形可视化
  2. 我也来谈谈时间管理方式及工具
  3. jQuery 1.9+ ajaxStart事件无效,无法被触发的原因。
  4. 后台返回的数据换行显示
  5. CSS_伪元素_伪类
  6. 跨服务器post数据失败:验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 machineKey 配置指定了相同的 validationKey 和验证算法。的解决办法
  7. webstorm下debug调试react js程序
  8. pytorch的两个函数 tensor.detach(),tensor.detach_(),tensor.clone() 的作用和区别
  9. 【英语学习】【Daily English】U11 Work L02 Just be honest
  10. export default (imported as router) was not found_U盘上的FOUND.000和FILE0000.CHK是什么
  11. 图像处理程序,在状态栏显示图像尺寸
  12. java div和table_详细为你讲解,DIV+CSS布局和TABLE布局的优缺点(经典)
  13. 三菱plc可以用c语言编程吗,三菱PLC六种常用编程语言讲解
  14. 使用TTP224触摸芯片时出现的一些问题
  15. 借助MATLAB与SIMULINK仿真嵌入式C算法
  16. 基于Php美妆化妆品商城购物网站
  17. 中国商用机身组件市场趋势报告、技术动态创新及市场预测
  18. 当知识图谱遇上推荐系统之DKN模型(论文笔记一)
  19. JAVA面试常见问题200+
  20. xxf_hud 使用介绍

热门文章

  1. 【转载】并发数据结构
  2. 天地图专题三:根据标注点的范围确定天地图的中心点和缩放级别
  3. 用strings命令输出文件中的可打印字符
  4. MySQL登陆时加-U选项
  5. 从头开始写框架(一):浅谈JS模块化发展
  6. ORACLE 中极易混淆的几个 NAME 的分析和总结
  7. svn中提示”Files 的值 .mine 无效” 的解决方案
  8. Java并发编程之CAS
  9. Android UI进阶之旅9 Material Design之沉浸式设计
  10. 两个List合并去重