`
truemylife
  • 浏览: 232109 次
  • 性别: 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
分享到:
评论

相关推荐

    使用lucene实现对数据库的索引

    - **批量处理** - 一次性读取大量数据而不是一条一条处理,可以减少数据库交互次数,提升效率。 - **并行索引** - 利用多线程同时处理不同的数据块,提高索引构建速度。 - **优化Analyzer** - 根据数据特性选择...

    搜索链接java(结合lucene)版的公交搜索系统-javaso

    - **更新与维护**:公交信息实时更新,系统需定期重建索引,或者采用增量索引的方式,确保数据的时效性。 **4. Lucene的扩展与优化** 为了提高搜索效率和用户体验,系统可能还需要结合其他技术,如Elasticsearch...

    三电平SVPWM模型的Matlab仿真及其在逆变器性能优化中的应用

    内容概要:本文详细介绍了三电平SVPWM模型在Matlab中的搭建与研究,重点探讨了三电平逆变器的工作原理、性能特点以及参数优化方法。文中不仅解释了三电平逆变器相较于传统两电平逆变器的优势,如更高的电压分辨率和更低的谐波失真,还深入讨论了SVPWM控制策略的具体实现步骤,包括扇区划分、中性点电压平衡、死区时间和波形生成等关键环节。此外,文章还强调了仿真与实际应用之间的差异,指出仿真只是调试的起点而非终点。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对逆变器建模和仿真相关工作的从业者。 使用场景及目标:适用于需要深入了解三电平逆变器特性和优化控制策略的研究项目,旨在帮助读者掌握基于Matlab的三电平SVPWM模型构建技巧,从而更好地进行逆变器性能评估和改进。 其他说明:文章提供了大量实用的Matlab代码片段,便于读者理解和实践。同时提醒读者关注仿真与现实应用间的细微差别,确保理论成果能够顺利转化为实际效益。

    spring-boot-2.3.9.RELEASE.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    水利规范-7p倒虹吸工程及渠道防渗衬砌设计图集.zip

    水利规范-7p倒虹吸工程及渠道防渗衬砌设计图集.zip

    JAVAWeb外文文献毕业设计样本.doc

    JAVAWeb外文文献毕业设计样本.doc

    scratch少儿编程逻辑思维游戏源码-我的世界冒险通过 V5.zip

    scratch少儿编程逻辑思维游戏源码-我的世界冒险通过 V5.zip

    scratch少儿编程逻辑思维游戏源码-星之卡比 动画.zip

    scratch少儿编程逻辑思维游戏源码-星之卡比 动画.zip

    spring-data-redis-1.1.0.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-我的世界构建像素立方体.zip

    scratch少儿编程逻辑思维游戏源码-我的世界构建像素立方体.zip

    spring-boot-2.5.1.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-仙人掌内战.zip

    scratch少儿编程逻辑思维游戏源码-仙人掌内战.zip

    scratch少儿编程逻辑思维游戏源码-贪食蛇.zip

    scratch少儿编程逻辑思维游戏源码-贪食蛇.zip

    rocksdbjni-6.29.4.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    spring-boot-1.3.6.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    独家分享耗时3个月整理的开发者必备资源库 - 百度/迅雷/夸克三端同步更新

    复制链接到浏览器打开即可,https://link3.cc/diwangluo

    基于Matlab的水果识别程序:融合图像处理与深度学习技术

    内容概要:本文详细介绍了使用Matlab编写的水果识别程序。首先简述了人工智能和机器学习在水果识别领域的应用背景,强调了Matlab作为强大编程环境的优势。接着,文章逐步讲解了水果识别程序的具体实现流程,涵盖数据预处理、特征提取、模型训练以及最终的识别算法实现。每个环节都采用了先进的技术和方法,如图像去噪、大小调整、深度学习算法(特别是卷积神经网络CNN),并通过训练神经网络模型来提升识别精度。此外,还讨论了相关技术手段和技术挑战,展示了Matlab在图像处理和计算机视觉方面的强大能力。 适合人群:对图像处理、机器学习感兴趣的科研人员、学生及工程师。 使用场景及目标:适用于希望深入了解Matlab环境下水果识别程序的设计与实现的研究者;旨在帮助使用者掌握从数据准备到模型部署的一系列技能,为实际项目提供理论支持和技术指导。 其他说明:文中不仅提供了详细的程序实现步骤,还对未来发展方向进行了展望,鼓励更多人参与到水果识别及相关领域的研究中。

    rocksdbjni-6.16.4.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    西门子S7-300 PLC在汽车生产线自动化中的模块化编程与Profibus DP网络集成方案

    内容概要:本文介绍了西门子S7-300 PLC在某汽车生产线的应用,涵盖了从硬件配置到软件编程的各个方面。硬件部分包括300 CPU、TP700触摸屏、远程ET200站点和Profibus DP网络系统。软件部分涉及PLC程序、HMI界面、IO表和图纸。重点在于模块化编程方法,如模拟量采集、气缸控制、线体阻挡、延时控制和自动换班等功能块的集成。同时,文中提到压力值和位移传感器的数据采集,并通过触摸屏以曲线形式展示。此外,还讨论了梯形图、STL和SCL三种编程语言的混合使用,确保程序结构清晰且易于维护。最后强调了Profibus DP网络在各站点间数据传输中的重要作用。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和Profibus DP网络有研究兴趣的人群。 使用场景及目标:适用于汽车制造业及其他类似行业,旨在提高生产线的自动化程度和生产效率,确保产品质量。通过对S7-300 PLC的学习和应用,掌握模块化编程技巧和网络通信协议,优化生产线管理。 阅读建议:读者可以通过本文深入了解S7-300 PLC的具体应用场景和技术细节,特别是模块化编程的优势和混合编程的实际操作。同时,关注Profibus DP网络的作用,理解其在网络架构中的重要地位。

    scratch少儿编程逻辑思维游戏源码-数学横版过关游戏.zip

    scratch少儿编程逻辑思维游戏源码-数学横版过关游戏.zip

Global site tag (gtag.js) - Google Analytics