`
truemylife
  • 浏览: 230664 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

solr一次性重建所有内容的索引引发的问题及优化方案

阅读更多

一、设定应用布署环境为Nginx+Tomcat

 

二、问题集:

1、Nginx下504 Timeout出错或Length出错

2、Nginx下502 Conntect Refused出错及solr使用域名时的安全问题

3、Java Heap Out of Memory出错

 

三、问题详细分析

1、由于请求时间太长,导致请求时间过期;在Nginx的缓存设置太小,导致Length出错

2、solr使用域名后,需要加上安全控制配置,这时需要确保当前的布署应用的ip是被允许访问solr的,否则会出现502错误。

3、由于一次性取出内容的数据列表对象太大,导致内存溢出。

 

四、问题的解决

1、nginx配置片短

 

server{

        listen 80;

        server_name sou.caidao8.com;//配置成域名访问  说明1

 

    location / {

 

        //ip限制  说明1

        deny 192.168.1.1;

        allow 192.168.90.0/24;你允许的内部外段

        allow ip;你指定的ip;

        deny all;

 

 

        proxy_pass http://192.168.90.24:8080;

        proxy_buffering off;//此处解决Length问题  说明2

        proxy_set_header        Host            $host;

        index index.html;

        client_max_body_size    1024m;

        #client_body_buffer_size 128k;

        //以下解决超时问题   说明3

        proxy_connect_timeout   6000;

        proxy_send_timeout      6000;

        proxy_read_timeout      6000;

       }

}

当然相关的应用调用sou.caidao8.com时,也要做相关的timeout配置    说明3

 

2、tomcat connector配置片段

<Connector executor="tomcatThreadPool"

               port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"

               maxHttpHeaderSize="8192"

               maxThreads="5000" minSpareThreads="1000"

               enableLookups="false" redirectPort="8443" acceptCount="3500"

               connectionTimeout="600000"   说明3 disableUploadTimeout="true"   compression="on" compressionMinSize="2048"

   compressableMimeType="text/html,text/xml,application/x-javascript,text/javascript,text/css,text/plain"

    />

 

3、为防止内存溢出,需指定jvm以下参数较大值,比如 -Xms1024m -Xmx1024m  说明4

 

说明1:solr支持分布式布署,使用域名调用更加灵活和便于分布式的实现。另外solr提供后台管理,若应用布署在远程机房,如果不使用域名,造成无法访问solr服务。由此还是有必要提供域名,但是这给solr的安全带来隐患,因此需要过虑和限制ip,比如我们这里只允许远程机房内部网段和公司的ip可访问solr域名。这样就达到了solr服务的安全性,又方便于以后分布式扩展及工作环境下访问solr的后台管理。

说明2:由于内容较大,需设置proxy_buffering off;

说明3:由于solr服务及其他调用solr服务的应用是在一个请求链上,因此相关的请求时间都需要设大。看上面的说明3标志,至少有三个地方需要相关的timeout设置

 

五、应用优化 

以上方法,虽然一时避免问题的出现,但如果数据量再次扩大,可能还是没有根本解决问题。需要从进一步优化应用。优化办法

1、尽可能使用增量重建索引,由于增量索引数据量小,可避免以上所有问题。

2、即使全文索引重建索引无法避免,必须按业务分段增量重建,比如每次取2000条记录,不要形成java大对象,这样也可避免以上所有问题。

 

六、在解决问题的过程中,一度尝试使用nginx HttpChunkinModule来解决问题,低版本的nginx需要安装 HttpChunkinModule,因此直接升级nginx到1.4.1版本,但此时设置chunkin on;重起nginx无法生效;

         最终在http://serverfault.com/questions/159313/enabling-nginx-chunked-transfer-encoding/187573#187573找到了解决问题的关键"proxy_buffering off;"//此处解决Length问题,也就没有必要进一步去研究HttpChunkinModule。

         进一步了解在HttpChunkinModule http://wiki.nginx.org/HttpChunkinModule

 

        

1
4
分享到:
评论

相关推荐

    跟益达学Solr5之索引文件夹下所有文件

    总之,"跟益达学Solr5之索引文件夹下所有文件"教程涵盖了从安装配置Solr5,创建核心,配置文件索引,到数据导入,查询优化以及监控维护等一系列步骤。通过学习这些内容,你可以掌握如何利用Solr5构建一个强大的文件...

    基于solr的网站索引架构(一)

    在本篇博文中,我们将探讨基于Apache Solr构建的网站索引架构,这是搜索引擎技术中的一个关键组件。Solr是一个开源、高性能的全文检索服务,它允许开发者为大量数据建立索引,从而实现快速的搜索功能。在"基于solr的...

    solr创建索引的原理及解析

    ### Solr创建索引的原理及解析 #### 一、Solr概述与索引机制 Apache Solr是一款基于Lucene的高性能全文检索服务器,广泛应用于网站的搜索功能中。Solr支持分布式部署,并且提供了丰富的API接口,方便与其他系统...

    Solr数据库插入(全量和增量)索引

    全量索引是指将整个数据集插入 Solr 索引库中,一般用于第一次创建索引的情况。在这种情况下,我们需要将所有数据从数据源中提取出来,然后将其插入 Solr 索引库中。全量索引的优点是可以快速地创建索引,但其缺点是...

    solr创建索引并查询

    ### Solr创建索引并查询的关键知识点 #### 一、Solr简介 Apache Solr是一款开源的全文搜索引擎平台,基于Lucene实现。它提供了一套完整的搜索解决方案,并且支持多种高级特性,如高亮显示、分面搜索、地理位置搜索...

    solr增量导入更新索引包

    增量导入更新索引包是Solr中的一项重要功能,它允许系统仅处理自上次完整索引以来发生改变的数据,从而大大提升了效率并降低了资源消耗。下面将详细阐述Solr增量更新的相关知识点。 1. **Solr的索引机制** Solr...

    Solr 查询,索引

    Solr查询与索引是Apache Solr的核心功能,它是一个基于Lucene的开源搜索引擎服务器,提供了高效、可扩展的全文检索、命中高亮、 faceted search(分面搜索)、拼写检查、动态集群等特性。在本文中,我们将深入探讨...

    全局索引Solr介绍及资源下载

    包含solr介绍、全局索引介绍、ik分词器安装包、solr安装包、及各个部分的安装教程。

    Solr全文索引

    Solr全文索引是基于Apache Lucene的开源搜索服务器,它提供了一个分布式、可扩展、高性能的全文检索和分析平台。在本项目中,"Weiz.Solr"似乎是一个C#开发的Solr客户端库,用于简化与Solr服务器的交互。下面将详细...

    跟益达学Solr5之增量索引MySQL数据库表数据

    在传统的全量索引中,Solr会一次性将所有数据库数据导入索引。然而,随着数据的不断增长,全量索引不仅耗时,而且可能对系统造成较大压力。增量索引则只对新插入、更新或删除的数据进行索引,显著提高了效率和性能。...

    Solr 学习笔记(五)-Solr扩展之分布式索引实例

    在本篇Solr学习笔记中,我们将探讨Solr的分布式索引功能,这对于处理大量数据和实现高可用性至关重要。Solr的分布式索引能力允许我们跨越多个节点分布和处理索引过程,从而提高索引速度和查询性能。在实际应用中,这...

    solr定时索引

    Solr定时索引是Apache Solr搜索引擎中的一个重要特性,它允许我们按照预设的时间间隔自动更新索引,确保数据的实时性和准确性。Solr的定时索引分为增量索引和完整索引两种方式,每种都有其特定的应用场景和优势。 ...

    solr资料以及问题汇总

    这个压缩包包含了一系列与Solr相关的资料和问题解决方案,对于开发者来说是一份宝贵的资源集合。 首先,"eContact+V3.5(3.5.7.4Q1)Solr檢索附件需求分析書V1.0-ZhaoHaiming20100415.docx"文件可能是关于一个特定...

    hbase+solr创建二级索引完整操作

    ### hbase+solr创建二级索引完整操作 #### 一、概述 本文档详细介绍了如何利用HBase和Solr创建二级索引的过程。通过整合HBase与Solr的优势,可以构建高性能的数据存储与检索系统。HBase作为分布式列族数据库,能够...

    Solr索引测试报告

    Solr 索引 测试报告 性能

    solr查询索引

    Solr查询索引是Apache Solr的核心功能之一,它是一个基于Lucene的开源搜索服务器,提供了高效的全文检索、文档分类和聚类、拼写检查、高亮显示搜索结果等多种功能。在本文中,我们将深入探讨如何使用Solr进行索引...

    java solr solrj 带账号密码增量查询添加索引

    主要讲解了 solr客户端如何调用带账号密码的solr服务器调用,实现添加索引和查询索引,以及分组查询

Global site tag (gtag.js) - Google Analytics