本文共 2601 字,大约阅读时间需要 8 分钟。
产生场景:
java调用es,由于代码不当,导致每次调用都会新建链接,当循环调用2万次时,报错了,发生了如下错误:2018-07-27 11:44:28 814 | ERROR | pool-2722-thread-1 | CloseableHttpAsyncClientBase$1 | I/O reactor terminated abnormallyorg.apache.http.nio.reactor.IOReactorException: Failure opening selector at org.apache.http.impl.nio.reactor.AbstractIOReactor.(AbstractIOReactor.java:103) at org.apache.http.impl.nio.reactor.BaseIOReactor. (BaseIOReactor.java:85) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:318) at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:192) at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64) at java.lang.Thread.run(Thread.java:745)Caused by: java.io.IOException: Unable to establish loopback connection at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:101) at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:68) at java.security.AccessController.doPrivileged(Native Method) at sun.nio.ch.PipeImpl. (PipeImpl.java:170) at sun.nio.ch.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:50) at java.nio.channels.Pipe.open(Pipe.java:155) at sun.nio.ch.WindowsSelectorImpl. (WindowsSelectorImpl.java:127) at sun.nio.ch.WindowsSelectorProvider.openSelector(WindowsSelectorProvider.java:44) at java.nio.channels.Selector.open(Selector.java:227) at org.apache.http.impl.nio.reactor.AbstractIOReactor. (AbstractIOReactor.java:101) ... 5 moreCaused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect at sun.nio.ch.Net.connect0(Native Method) at sun.nio.ch.Net.connect(Net.java:454) at sun.nio.ch.Net.connect(Net.java:446) at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648) at java.nio.channels.SocketChannel.open(SocketChannel.java:189) at sun.nio.ch.PipeImpl$Initializer$LoopbackConnector.run(PipeImpl.java:130) at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:83) ... 14 more2018-07-27 11:44:58 780 | INFO | http-apr-8089-exec-2 | EntFileEsController | ========>初始化失败java.io.IOException: listener timeout after waiting for [30000] ms at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:660) at org.elasticsearch.client.RestClient.performRequest(RestClient.java:219) at org.elasticsearch.client.RestClient.performRequest(RestClient.java:191)
处理办法:
不要每次查询都新建链接,建立链接这种操作,不要放在循环内部。转载地址:http://wweif.baihongyu.com/