2012-12-05 71 views
4

在solr 3.6.1中,在針對solr服務器執行併發請求(併發負載測試)時,某些時候出現以下錯誤。在solr中的500 null錯誤之前提交3.6.1

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

前500空|| org.mortbay.jetty.EofException致力於|在 org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:791)|?在 org.mortbay.jetty.AbstractGenerator $ Output.flush(AbstractGenerator.java:569)|?at org.mortbay.jetty.HttpConnection $ Output.flush(HttpConnection.java:1012)|?at sun.nio.cs .StreamEncoder.implFlush(StreamEncoder.java:278)|?at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)|?at jav a.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)|?at org.apache.solr.common.util.FastWriter.flush(FastWriter.java:115)|?at org.apache.solr.servlet。 SolrDispatchFilter.writeResponse(SolrDispatchFilter.java:353)|?at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:273)|?at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter( ServletHandler.java:1212)|?at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)|?at 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)|?在 Ø rg.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)|?at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)|?at org.mortbay.jetty。 handler.HandlerCollection.handle(HandlerCollection.java:114)|?在 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)|?在 org.mortbay.jetty.Server.handle(服務器。 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)|?at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)|?at org.mortbay.jetty.HttpConnec tion.handle(HttpConnection.java:404)|?at org.mortbay.jetty.bio.SocketConnector $ Connection.run(SocketConnector.java:228)|?at org.mortbay.thread.QueuedThreadPool $ PoolThread.run( QueuedThreadPool.java:582)|因編程爲 通過:java.net.SocketException:折損管道|?在 java.net.SocketOutputStream.socketWrite0(本地方法)|?在 java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:在 org.mortbay.io.ByteArrayBuffer.writeTo(ByteArrayBuffer.java:368)|?在 org.mortbay.io上的java.net.SocketOutputStream.write(SocketOutputStream.java:136)|?在 。 bio.StreamEndPoint.flush(StreamEndPoint.java:129)|?at org.mortbay.io.bio.StreamEndPoint.flush(StreamEndPoint.java:161)|?at org.mortbay.jetty.H ttpGenerator.flush(HttpGenerator.java:714)|?... 25 更多

請提出任何想法,以解決從Solr的這個錯誤?

+0

這也可以通過一個破碎的TCP管道由於客戶端造成的(沒有碼頭)。它發生在客戶端關閉TCP連接並且solr嘗試發送響應時。 – Vincent

回答

7

我不認爲這是你的解決方案,由於客戶端的超時問題,破管發生(至少發生在我身上)。

檢查您的curl超時值並嘗試顯式設置保持活動的Tomcat,以便您可以再次避免這種情況。

快速更新(只給一個提示,配置可能會有所不同)

在碼頭文件夾

,你應該尋找一個文件夾名爲WEB-INF應包含碼頭-web.xml文件命名(或網頁-jetty.xml)

加上幾行:

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

應該幫助你(你喜歡什麼更多的改變720)

另外還有一個選項

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

這可能會做你的伎倆。你必須深入到碼頭的doc很多弄清楚這對於你的情況

更多關於這一點:herehere

+0

感謝您的寶貴答案。在Jetty服務器上運行solr。你能告訴我在哪裏可以找到curl超時值嗎? – Kaven

+0

編輯更多信息 –

+0

感謝您的詳細描述。目前在jetty.xml中,maxIdleTime的值爲50000.現在將設置爲 300000。讓我檢查一下這個配置,再次感謝你的努力。 – Kaven