2015-06-26 3 views
0

Я запускаю Solr 5.1 в режиме SolrCloud и индексирую много документов. Он работает нормально, но я не могу подключиться через интерфейс HTTP.Как справиться с чрезмерным CLOSE_WAIT, который засоряется Solr

Слишком большое количество соединений TCP кажется открытым. Я поставил обратный прокси Nginx перед Solr. Отчеты Nginx содержат около 300 открытых соединений, но у solr около 29 000. Он появляется, даже когда Nginx закрывает соединение, Solr сохраняет его открытым.

В журналах Solr я неоднократно видим следующее:

Невозможно записать ответ, клиент закрыл соединение или мы выключая org.eclipse.jetty.io.EofException в org.eclipse.jetty .http.HttpGenerator.flushBuffer (HttpGenerator.java:914) at org.eclipse.jetty.http.AbstractGenerator.flush (AbstractGenerator.java:443) на org.eclipse.jetty.server.HttpOutput.flush (HttpOutput.java : 100) at org.eclipse.jetty.server.AbstractHttpConnection $ Output.flush (AbstractHttpConnection.java:1094) at sun.nio.cs.StreamEncode r.implFlush (Неизвестный источник) at sun.nio.cs.StreamEncoder.flush (Неизвестный источник) at java.io.OutputStreamWriter.flush (Неизвестный источник) на org.apache.solr.util.FastWriter.flush (FastWriter .java: 137) на org.apache.solr.response.QueryResponseWriterUtil.writeQueryResponse (QueryResponseWriterUtil.java:54) на org.apache.solr.servlet.SolrDispatchFilter.writeResponse (SolrDispatchFilter.java:815) в org.apache .solr.servlet.SolrDispatchFilter.doFilter (SolrDispatchFilter.java:455) на org.apache.solr.servlet.SolrDispatchFilter.doFilter (SolrDispatchFilter.java:220) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1419) по адресу org.eclipse.jetty.servlet.ServletHandler.doHandle (Servle tHandler.java:455) at org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java:557) at org.eclipse.jetty.server.session.SessionHandler.doHandle (SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1075) at org.eclipse.jetty. servlet.ServletHandler.doScope (ServletHandler.java:384) на org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:193) на org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1009) at org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:135) at org.eclipse.jetty.serve r.handler.ContextHandlerCollection.handle (ContextHandlerCollection.java:255) at org.eclipse.jetty.server.handler.HandlerCollection.handle (HandlerCollection.java:154) at org.eclipse.jetty.server.handler.HandlerWrapper. handle (HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle (Server.java:368) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest (AbstractHttpConnection.java:489) at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest (BlockingHttpConnection.java:53) at org.eclipse.jetty.server.AbstractHttpConnection.content (AbstractHttpConnection.java:953) at org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.content (AbstractHttpConnection.java:1014) at org.eclipse.jetty.http.HttpPar ser.parseNext (HttpParser.java:861) at org.eclipse.jetty.http.HttpParser.parseAvailable (HttpParser.java:240) at org.eclipse.jetty.server.BlockingHttpConnection.handle (BlockingHttpConnection.java:72) на сайте org.eclipse.jetty.server.bio.SocketConnector $ ConnectorEndPoint.run (SocketConnector.java:264) на org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:608) на org.eclipse.jetty.util.thread.QueuedThreadPool $ 3 .run (QueuedThreadPool.java:543) в java.lang.Thread.run (Unknown Source) Вызванный: java.net.SocketException: Broken трубы на java.net.SocketOutputStream.socketWrite0 (Native Method) на Java .net.SocketOutputStream.socketWrite (Неизвестный источник) на java.net.SocketOutputStream.write (Неизвестный источник) на org.eclipse.jetty.io.ByteArrayBuffer.writeTo (ByteArrayBuffer.java:375) на org.eclipse.jetty .io.bio.StreamEndPoint.flush (StreamEndPoint.java:164) на org.eclipse.jetty.io.bio. StreamEndPoint.flush (StreamEndPoint.java:194) в org.eclipse.jetty.http.HttpGenerator.flushBuffer (HttpGenerator.java:838) ... 36 более

Как исправить Solr? Мне нужно настроить настройки Jetty.

+0

Запросить ли ваши запросы SolrCloud через прокси nginx? Это казалось бы ненужным и, возможно, неожиданным. Фактический CLOSE_WAIT не является проблемой Solr, а проблемой O/S. Вы можете посмотреть, как уменьшить длину вашего O/S. –

+0

Как вы индексируете объекты в Solr? Я бы посоветовал проверить вашего клиента, чтобы убедиться, что он не запускает новый сокет для каждой передачи, я столкнулся с этим раньше, когда индексирование с большим количеством потоков. – browskie

ответ

0

Проблема была в том, что я немедленно совершил каждую транзакцию. Когда я изменил его, чтобы совершать только каждые 10 минут, он решил проблему.

Смежные вопросы