【大数据开发运维解决方案】Solr公共读写调优建议

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: Solr是一个开源搜索平台,用于构建搜索应用程序。 是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

前言

Solr是一个开源搜索平台,用于构建搜索应用程序。 是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。


Solr调优部分总结

博主在工作中有一个基于Solr的全文检索项目,由于要求及时响应,故对Solr集群做了一些调优!
当Solr索引数据存放在本地磁盘或者HDFS时,可以从以下几个方面进行调优配置:

1、Schema的配置优化•uniqueKey定义为long类型

说明:

  • long类型的查询性能优于string类型,如果需要定义为string类型,可以在业务层建立long到string的映射。
  • 建议unqiueKey字段配置required="true"。
  • 建议uniqueKey字段配置docValues="true"。
  • 为了获得更好的查询性能,建议查询时显式地指定返回字段为uniqueKey字段。
  • 需要排序、统计的字段配置为docValues="true",可以有效节省内存使用(配置docValues="true"后,不需要再配置stored="true")

2、优化索引方案

可以通过修改“solrconfig.xml”文件内容来实现以下调优效果。

调优配置项 修改结果
提高索引速度,加大索引线程数 \<maxlndexingThreads>$(solr.maxlndexingThreads:16}</maxlndexingThreads\>
增大文档索引缓存 \<ramBufferSizeMB>1024\</ramBufferSizeMB>
增大索引段合并因子 \<memergeFactor>20\</mergeFactor>
加大索引自动硬提交时间 maxTime>$fsolr.autoCommit.maxTime:300001\</maxTime>
增大索引的自动软提交时间 \<maxTime>$solr.autoSoftCommit.maxTime:600001\</maxTime>
基于docValues获取uniqueKey的值 \<useDocValueGetField>true\</useDocValueGetField>
对docld进行排序,优先顺序读取磁盘 \<sortDocldBeforeGetDoc>true\</sortDocldBeforeGetDoc>
缓存docld,避免二次读取磁盘 \<useQuickFirstMatch>true\< /useQuickFirstMatch>

说明:
useDocValueGetField的使用场景:

  • 返回字段(fl)为uniqueKey
  • uniqueKey为Numberic类型(long/int/float/double)
  • uniqueKey配置docValues=true

useQuickFirstMatch的使用场景:

  • 索引入库后不再更改(删除/合并操作等)

3、优化查询方案

缓存在Solr中充当了一个非常重要的角色,Solr中主要包括以下3种缓存:

  • Filter cache(过滤器缓存),用于保存过滤器(fq参数)和层面搜索的结果;
  • Document cache(文档缓存),用于保存lucene文档存储的字段;
  • Query result(查询缓存),用于保存查询的结果。

    说明:
    
  • Solr中还包含lucene内部缓存,该缓存用户无法调控。

通过调整这3种缓存,可以对Solr的搜索实例进行调优。

可以通过修改“solrconfig.xml”文件内容配置缓存,如下:

缓存类型 修改方案
过滤器缓存 \<filterCache class="solr.FastLRUCache" size="200" initialSize="200" autowarmCount="50"/\>“size”和“initialSize”值为缓存document id的数量“autowarmCount”为“initialSize”值的1/4,根据实际场景合理设置,过大会占用大量内存
查询结果缓存 \<queryResultCache class="solr.FastLRUCache" size="3000"initialSize="3000autowarmCount="750"/>“size”和“initialSize”的值 = 不同查询和不同排字的数x 每次询字最数x2."autowarmCount”值为“initialSize”值的1/4.
文档缓存 ”size”和“initialSize”的值 = 一次询返回最大的文档数量x实例询的并发数

总结

Solr作为全文检索服务器时,主要是从Solr自身JVM、Schema、Solrconfig方面以及服务器性能上进行调优。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
11天前
|
运维 自然语言处理 算法
云栖实录 | 大模型在大数据智能运维的应用实践
云栖实录 | 大模型在大数据智能运维的应用实践
|
3月前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
388 3
|
3月前
|
机器学习/深度学习 人工智能 运维
智能化运维:AI与大数据在IT运维中的应用探索####
本文旨在探讨人工智能(AI)与大数据分析技术如何革新传统IT运维模式,提升运维效率与服务质量。通过具体案例分析,揭示AI算法在故障预测、异常检测及自动化修复等方面的实际应用成效,同时阐述大数据如何助力实现精准运维管理,降低运营成本,提升用户体验。文章还将简要讨论实施智能化运维面临的挑战与未来发展趋势,为IT管理者提供决策参考。 ####
|
4月前
|
运维 监控 关系型数据库
数据库管理中的自动化运维:挑战与解决方案
数据库管理中的自动化运维:挑战与解决方案
|
4月前
|
运维 监控 安全
云计算环境下的运维挑战与解决方案
本文探讨了云计算环境中运维面临的主要挑战,包括资源管理、自动化部署、安全性问题等,并提出了相应的解决策略。通过案例分析和最佳实践,为云环境下的运维工作提供了指导和参考。
137 1
|
4月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
107 2
|
5月前
|
机器学习/深度学习 人工智能 运维
智能运维:大数据与AI的融合之道###
【10月更文挑战第20天】 运维领域正经历一场静悄悄的变革,大数据与人工智能的深度融合正重塑着传统的运维模式。本文探讨了智能运维如何借助大数据分析和机器学习算法,实现从被动响应到主动预防的转变,提升系统稳定性和效率的同时,降低了运维成本。通过实例解析,揭示智能运维在现代IT架构中的核心价值,为读者提供一份关于未来运维趋势的深刻洞察。 ###
219 10
|
4月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
132 1
|
5月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
108 3
|
5月前
|
运维 Java Linux
【运维基础知识】掌握VI编辑器:提升你的Java开发效率
本文详细介绍了VI编辑器的常用命令,包括模式切换、文本编辑、搜索替换及退出操作,帮助Java开发者提高在Linux环境下的编码效率。掌握这些命令,将使你在开发过程中更加得心应手。
62 2