首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

SolrJ遭遇"Broken pipe"

2013-09-11 
SolrJ遭遇Broken pipe在项目中用到SolrJ访问Solr服务器实现全文检索功能,前段时间都挺正常,今天发现在执

SolrJ遭遇"Broken pipe"

在项目中用到SolrJ访问Solr服务器实现全文检索功能,前段时间都挺正常,今天发现在执行某些搜索时容易出现异常:

2010/07/19 15:24:50 ERROR java.net.SocketException: 管道已断开 (errno:32)        at java.net.SocketOutputStream.socketWrite0(Native Method)        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:97)        at java.net.SocketOutputStream.write(SocketOutputStream.java:141)        at weblogic.servlet.internal.ChunkOutput.writeChunkTransfer(ChunkOutput.java:507)        at weblogic.servlet.internal.ChunkOutput.writeChunks(ChunkOutput.java:486)        at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:382)        at weblogic.servlet.internal.ChunkOutput$2.checkForFlush(ChunkOutput.java:580)        at weblogic.servlet.internal.ChunkOutput.write(ChunkOutput.java:306)        at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:146)        at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:138)        at java.io.OutputStream.write(OutputStream.java:58)        at org.apache.solr.common.util.FastOutputStream.write(FastOutputStream.java:59)……<2010-7-19 下午03时24分50秒 GMT+08:00> <Error> <HTTP> <BEA-101020> <[ServletContext@11150740[app:pese module:pese path:/pese spec-version:null]] Servlet failed with Exceptionjava.lang.IllegalStateException: Response already committed        at weblogic.servlet.internal.ServletResponseImpl.objectIfCommitted(ServletResponseImpl.java:1586)        at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:614)        at org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:362)        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:272)        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)        Truncated. see log file for complete stacktrace

?

但是从Solr控制台执行搜索时,较少遇到这个异常,在网上搜了一下也没发现有讲得靠谱的人,只能自己解决。在经过N次修改测试后,发现加大

CommonsHttpSolrServer.setConnectionManagerTimeout

的值可以解决问题。该参数官方API的解释是:

Sets soTimeout (read timeout) on the underlying HttpConnectionManager

就是读超时,看来这个应该是比较靠谱的解决方法了。这个值具体调到多少合适还需要实现应用中的网络环境、服务器响应速度等综合起来调整才好,所以建议在应用开发时把这个值做成可配置参数为宜。

1 楼 zht110227 2010-09-25   我也碰到这样的问题了,无从查起,不知道什么情况,有的时候没有,有的时候就会出现。
我的异常网推荐解决方案:weblogic.servlet.internal.ChunkOutput,http://www.myexception.cn/java-web/weblogic.servlet.internal.ChunkOutput.html

热点排行