在solr 3.6.1中500 null错误之前提交

时间:2012-12-05 09:11:30

标签: solr jetty

在solr 3.6.1中,在针对solr服务器执行并发请求(并发负载测试)时,某些时候出现以下错误。

org.apache.solr.common.SolrException log
SEVERE: org.mortbay.jetty.EofException
Caused by: java.net.SocketException: Broken pipe

  

在500之前提交null null || org.mortbay.jetty.EofException |?at   org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:791)|?在   org.mortbay.jetty.AbstractGenerator $ Output.flush(AbstractGenerator.java:569)|?在   org.mortbay.jetty.HttpConnection $ Output.flush(HttpConnection.java:1012)|?在   sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:278)|?在   sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)|?在   java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)|?在   org.apache.solr.common.util.FastWriter.flush(FastWriter.java:115)|?在   org.apache.solr.servlet.SolrDispatchFilter.writeResponse(SolrDispatchFilter.java:353)|?在   org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:273)|?在   org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1212)|?在   org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)|?在   org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)|?在   org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)|?在   org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)|?在   org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)|?在   org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)|?在   org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)|?在   org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)|?在   org.mortbay.jetty.Server.handle(Server.java:326)|?在   org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)|?在   org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:928)|?在   org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)|?在   org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)|?在   org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)|?在   org.mortbay.jetty.bio.SocketConnector $ Connection.run(SocketConnector.java:228)|?在   org.mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:582)|引起   by:java.net.SocketException:Broken pipe |?at   java.net.SocketOutputStream.socketWrite0(Native Method)|?at   java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)|?在   java.net.SocketOutputStream.write(SocketOutputStream.java:136)|?在   org.mortbay.io.ByteArrayBuffer.writeTo(ByteArrayBuffer.java:368)|?在   org.mortbay.io.bio.StreamEndPoint.flush(StreamEndPoint.java:129)|?在   org.mortbay.io.bio.StreamEndPoint.flush(StreamEndPoint.java:161)|?在   org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:714)|?... 25   更

请建议从solr解决此错误?

1 个答案:

答案 0 :(得分:7)

我不认为这是你的solr,由于客户端的超时问题,发生了破坏的管道(至少发生在我身上)。

检查你的curl超时值并尝试明确设置一个保持活动的Tomcat,这样你就可以再次避免这种情况。

快速更新(只是提示,配置可能会有所不同)

在你的jetty文件夹中,你应该找一个名为WEB-INF的文件夹,它应该包含一个名为jetty-web.xml(或web-jetty.xml)的文件

添加以下行:

<session-config>
    <session-timeout>720</session-timeout>
</session-config>

应该帮助你(在你喜欢的地方改变720)

还有选项

<Set name="maxIdleTime">300000</Set>

可能会有你的伎俩。你将不得不深入挖掘码头的文档,以便为你的案例找出答案

有关此内容的更多信息:herehere