solr 3.6.1中500之前提交的空错误

solr 3.6.1中500之前提交的空错误,solr,jetty,Solr,Jetty,在Solr3.6.1中,当对solr服务器执行并发请求(并发负载测试)时,在某个时候我会遇到以下错误 org.apache.solr.common.SolrException log SEVERE: org.mortbay.jetty.EofException Caused by: java.net.SocketException: Broken pipe 及 在500 null | | org.mortbay.jetty.eofeexception | at?之前提交 org.mortbay

在Solr3.6.1中,当对solr服务器执行并发请求(并发负载测试)时,在某个时候我会遇到以下错误

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

在500 null | | org.mortbay.jetty.eofeexception | 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.streamncoder.implFlush(streamncoder.java:278)| at sun.nio.cs.streamncoder.flush(streamncoder.java:122)| at 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:at处的断管 java.net.SocketOutputStream.socketWrite0(本机方法)|?位于 SocketOutputStream.socketWrite(SocketOutputStream.java:92)|位于 java.net.SocketOutputStream.write(SocketOutputStream.java:136)| at 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建议解决此错误的方法?

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

检查curl timeout值,并尝试显式设置keep-alive Tomcat,以便再次避免这种情况

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

在jetty文件夹中,应查找名为WEB-INF的文件夹,该文件夹应包含名为jetty-WEB.xml(或WEB jetty.xml)的文件

添加以下行:

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

720
应该对你有帮助(在你更喜欢的方面改变720)

还有一个选择

<Set name="maxIdleTime">300000</Set>
300000
那可能会达到你的目的。你必须深入了解jetty的医生才能为你的案子找到答案


更多信息:谢谢你宝贵的回答。我正在Jetty服务器上运行solr。你能告诉我在哪里可以找到curl超时值吗?谢谢你的详细描述。目前在jetty.xml中,maxIdleTime的值为50000。现在设置为300000。让我检查一下这个配置&再次感谢您的努力。这也可能是由于客户端(而不是jetty)导致TCP管道损坏造成的。当客户端关闭TCP连接,solr尝试发送响应时,就会发生这种情况。