SolrCloud モードで Solr 5.1 を実行し、多くのドキュメントのインデックスを作成しています。しばらくは問題なく動作しますが、HTTP インターフェース経由で接続できなくなります。
過剰な数の TCP 接続が開いているように見えます。Solr の前に Nginx リバース プロキシを配置しました。Nginx レポートには約 300 の開いている接続がありますが、solr には約 29,000 があります。Nginx が接続を閉じても表示されますが、Solr は接続を開いたままにします。
Solr ログには、次の内容が繰り返し表示されます。
応答を書き込めません。クライアントが接続を閉じたか、org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:914) で org.eclipse.jetty.io.EofException をシャットダウンしています。 AbstractGenerator.flush(AbstractGenerator.java:443) at org.eclipse.jetty.server.HttpOutput.flush(HttpOutput.java:100) at org.eclipse.jetty.server.AbstractHttpConnection$Output.flush(AbstractHttpConnection.java:1094) sun.nio.cs.StreamEncoder.implFlush (未知のソース) で sun.nio.cs.StreamEncoder.flush (未知のソース) で java.io.OutputStreamWriter.flush (未知のソース) で org.apache.solr.util.FastWriter org.apache.solr.servlet.SolrDispatchFilter の org.apache.solr.response.QueryResponseWriterUtil.writeQueryResponse(QueryResponseWriterUtil.java:54) の .flush(FastWriter.java:137)。org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:455) の writeResponse(SolrDispatchFilter.java:815) org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:220) の org.eclipse org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) の .jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) org.eclipse.jetty.server.handler.ScopedHandler.handle の(ScopedHandler.java:137) org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) で org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) で org. org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384) の org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)。org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009) の eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)。 org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) の ScopedHandler.handle(ScopedHandler.java:135) org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java: 154) org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) で org.eclipse.jetty.server.Server.handle(Server.java:368) で org.eclipse.jetty.server org.eclipse.jetty.server の .AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)。org.eclipse.jetty.server の BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)。org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1014) の AbstractHttpConnection.content(AbstractHttpConnection.java:953) org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72) org.eclipse.jetty.server.bio.SocketConnector $ConnectorEndPoint.run(SocketConnector.java:264) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool. java:543) java.lang.Thread.run (不明なソース) 原因: java.net.SocketException: java.net.SocketOutputStream でパイプが壊れています。org.eclipse.jetty.io.ByteArrayBuffer.writeTo(ByteArrayBuffer.java:375) で java.net.SocketOutputStream.write(未知のソース) で java.net.SocketOutputStream.socketWrite(不明なソース) .eclipse.jetty.io.bio.StreamEndPoint.flush(StreamEndPoint.java:164) at org.eclipse.jetty.io.bio.StreamEndPoint.flush(StreamEndPoint.java:194) at org.eclipse.jetty.http.HttpGenerator .flushBuffer(HttpGenerator.java:838) ... 36 続き194) org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:838) で ... 36 もっと見る194) org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:838) で ... 36 もっと見る
Solr を修正するにはどうすればよいですか? Jetty の設定を微調整する必要がありますか。