一、设定应用布署环境为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
相关推荐
总之,"跟益达学Solr5之索引文件夹下所有文件"教程涵盖了从安装配置Solr5,创建核心,配置文件索引,到数据导入,查询优化以及监控维护等一系列步骤。通过学习这些内容,你可以掌握如何利用Solr5构建一个强大的文件...
在本篇博文中,我们将探讨基于Apache Solr构建的网站索引架构,这是搜索引擎技术中的一个关键组件。Solr是一个开源、高性能的全文检索服务,它允许开发者为大量数据建立索引,从而实现快速的搜索功能。在"基于solr的...
### Solr创建索引的原理及解析 #### 一、Solr概述与索引机制 Apache Solr是一款基于Lucene的高性能全文检索服务器,广泛应用于网站的搜索功能中。Solr支持分布式部署,并且提供了丰富的API接口,方便与其他系统...
全量索引是指将整个数据集插入 Solr 索引库中,一般用于第一次创建索引的情况。在这种情况下,我们需要将所有数据从数据源中提取出来,然后将其插入 Solr 索引库中。全量索引的优点是可以快速地创建索引,但其缺点是...
### Solr创建索引并查询的关键知识点 #### 一、Solr简介 Apache Solr是一款开源的全文搜索引擎平台,基于Lucene实现。它提供了一套完整的搜索解决方案,并且支持多种高级特性,如高亮显示、分面搜索、地理位置搜索...
增量导入更新索引包是Solr中的一项重要功能,它允许系统仅处理自上次完整索引以来发生改变的数据,从而大大提升了效率并降低了资源消耗。下面将详细阐述Solr增量更新的相关知识点。 1. **Solr的索引机制** Solr...
Solr查询与索引是Apache Solr的核心功能,它是一个基于Lucene的开源搜索引擎服务器,提供了高效、可扩展的全文检索、命中高亮、 faceted search(分面搜索)、拼写检查、动态集群等特性。在本文中,我们将深入探讨...
包含solr介绍、全局索引介绍、ik分词器安装包、solr安装包、及各个部分的安装教程。
Solr全文索引是基于Apache Lucene的开源搜索服务器,它提供了一个分布式、可扩展、高性能的全文检索和分析平台。在本项目中,"Weiz.Solr"似乎是一个C#开发的Solr客户端库,用于简化与Solr服务器的交互。下面将详细...
在传统的全量索引中,Solr会一次性将所有数据库数据导入索引。然而,随着数据的不断增长,全量索引不仅耗时,而且可能对系统造成较大压力。增量索引则只对新插入、更新或删除的数据进行索引,显著提高了效率和性能。...
在本篇Solr学习笔记中,我们将探讨Solr的分布式索引功能,这对于处理大量数据和实现高可用性至关重要。Solr的分布式索引能力允许我们跨越多个节点分布和处理索引过程,从而提高索引速度和查询性能。在实际应用中,这...
Solr定时索引是Apache Solr搜索引擎中的一个重要特性,它允许我们按照预设的时间间隔自动更新索引,确保数据的实时性和准确性。Solr的定时索引分为增量索引和完整索引两种方式,每种都有其特定的应用场景和优势。 ...
这个压缩包包含了一系列与Solr相关的资料和问题解决方案,对于开发者来说是一份宝贵的资源集合。 首先,"eContact+V3.5(3.5.7.4Q1)Solr檢索附件需求分析書V1.0-ZhaoHaiming20100415.docx"文件可能是关于一个特定...
### hbase+solr创建二级索引完整操作 #### 一、概述 本文档详细介绍了如何利用HBase和Solr创建二级索引的过程。通过整合HBase与Solr的优势,可以构建高性能的数据存储与检索系统。HBase作为分布式列族数据库,能够...
Solr 索引 测试报告 性能
Solr查询索引是Apache Solr的核心功能之一,它是一个基于Lucene的开源搜索服务器,提供了高效的全文检索、文档分类和聚类、拼写检查、高亮显示搜索结果等多种功能。在本文中,我们将深入探讨如何使用Solr进行索引...
主要讲解了 solr客户端如何调用带账号密码的solr服务器调用,实现添加索引和查询索引,以及分组查询