2017-05-23 9 views
0

solrJ를 사용하여 solr 데이터 [solr cloud 6.5 - 3 machines]를 삽입/쿼리합니다. 이전에 SolrClient를 생성하기 위해 아래 코드를 사용했습니다. -사육사 구성 in solrJ Throwing 읽기 시간 초과 예외

HttpSolrClient server; 
server = new HttpSolrClient.Builder("").build(); 
server.setSoTimeout(20000); 
server.setConnectionTimeout(20000); 
server.setDefaultMaxConnectionsPerHost(200); 
server.setMaxTotalConnections(200); 
server.setFollowRedirects(false); 
server.setAllowCompression(true); 

이제이 solr Cloud에서 3 개의 Zookeeper 서버를 구성했습니다. SOLR 클라이언트를 생성하는 코드가되었다 -

CloudSolrClient server; 
String serverURL="zkapp1,zkapp2,zkapp3"; 
ArrayList zkHosts = newrrayList(Arrays.asList(serverURL.split(","))); 
server = new CloudSolrClient.Builder().withZkHost(zkHosts).build(); 
server.setSoTimeout(20000); 
server.setZkConnectTimeout(20000); 
server.setDefaultCollection("testSolr"); 

은 내가 [DefaultMaxConnectionsPerHost, MaxTotalConnections, 인, followRedirects AllowCompression] 전에 존재 다른 속성을 지정해야 할 위치를 알고 싶어요.

[일부 성공 안타 후 (읽기/쓰기)] 예외 아래에 몇 시간을 관찰 한 후, 때문에 이러한 설정으로 사육사를 구성하는 방법을 안내하십시오 -

org.apache.solr.client.solrj.SolrServerException: Timeout occured while waiting response from server at: http://solr6CLoudMachine:8983/solr/testSolr 
at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:621) 
at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:279) 
at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:268) 
at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:149) 
at org.apache.solr.client.solrj.SolrClient.commit(SolrClient.java:484) 
at org.apache.solr.client.solrj.SolrClient.commit(SolrClient.java:463) 
at com.til.damcore.repository.DAMCoreSolrManager.insertContent(DAMCoreSolrManager.java:288) 
at com.til.damcore.services.CMSContentUploadServiceSolrOnly.uploadCMSContent(CMSContentUploadServiceSolrOnly.java:227) 
at com.til.damapi.service.InsertContentService.insertSolrOnlyContent(InsertContentService.java:136) 
at com.til.damapi.controller.insert.InsertionController.insertDataSolr6(InsertionController.java:175) 
at sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
    Caused by: java.net.SocketTimeoutException: Read timed out 
at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) 
at java.net.SocketInputStream.read(SocketInputStream.java:170) 
at java.net.SocketInputStream.read(SocketInputStream.java:141) 
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:160) 
at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:84) 
at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:273) 
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140) 
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57) 
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261) 
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:283) 
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:251) 
at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:197) 
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272) 
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124) 
at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:685) 
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:487) 
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) 
at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:515) 
... 45 more 

아무도 권장 생산 어떤 제안시겠습니까 사육사에 대한 설정?

나는 완전히 붙어있다.

도움을 주시면 대단히 감사하겠습니다.

감사합니다,

Vibhav

답변

0

당신이 SolrCloud와 함께 SolrJ을 사용하고, 사육사는 이름이나 SOLR 인스턴스는 당신의 예외를보고 연결해야하는 SOLR 인스턴스의 IP를 반환 solr6CLoudMachine.

SolrJ 클라이언트를 실행중인 호스트에서 solr6CLoudMachine에 도달 할 수 있는지 먼저 확인해야합니다. 당신이 포트에 도달 할 수있는 경우

다음
ping solr6CLoudMachine 

시도 :

예를 들어, 먼저 쉘에서 solr6CLoudMachine의 IP 주소를 확인할 수 보려고 다시

curl http://solr6CLoudMachine:8983/solr/ 

와, 주어진 당신은 SolrClould 클러스터를 마주하고 있으며, 도달 할 Solr 인스턴스가 두 개 이상일 가능성이 높습니다.

그래서 SolrJ 클라이언트를 실행중인 호스트에서 대상 컬렉션이있는 모든 Solr 인스턴스에 연결할 수 있어야합니다.

+0

안녕하세요 @freedev : 답변 해 주셔서 감사합니다. 이미 ping이 원본 컴퓨터에서 제대로 작동하는지 확인했습니다. 이 예외는 성공적인 히트 이후에 발생합니다. 내 잘못, 나는이 문제에 대해 언급하지 않았습니다. –