12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.index(ElasticsearchRestTemplate.java:698)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.save(AbstractElasticsearchRepository.java:176)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at java.lang.reflect.Method.invoke(Method.java:498)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:657)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:621)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at com.sun.proxy.$Proxy143.save(Unknown Source)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at java.lang.reflect.Method.invoke(Method.java:498)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at com.sun.proxy.$Proxy143.save(Unknown Source)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at com.maibei.es.component.ESXDataComponent.saveStudentSO(ESXDataComponent.java:60)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.common.bytecode.Wrapper78.invokeMethod(Wrapper78.java)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:47)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:84)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker.invoke(DelegateProviderMetaDataInvoker.java:56)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:52)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:89)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:46)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:77)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:129)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:152)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:41)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:145)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:100)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:175)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:51)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:57)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at java.lang.Thread.run(Thread.java:748)
12月 22 18:40:57 host-172-31-2-46 java[39247]: Caused by: java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-1 [ACTIVE]
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:944)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.elasticsearch.client.RestClient.performRequest(RestClient.java:233)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1764)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1734)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1696)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.elasticsearch.client.RestHighLevelClient.index(RestHighLevelClient.java:928)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.index(ElasticsearchRestTemplate.java:696)
12月 22 18:40:57 host-172-31-2-46 java[39247]: ... 57 more
12月 22 18:40:57 host-172-31-2-46 java[39247]: Caused by: java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-1 [ACTIVE]
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.timeout(HttpAsyncRequestExecutor.java:387)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:92)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:39)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.reactor.AbstractIODispatch.timeout(AbstractIODispatch.java:175)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionTimedOut(BaseIOReactor.java:261)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.reactor.AbstractIOReactor.timeoutCheck(AbstractIOReactor.java:502)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.reactor.BaseIOReactor.validate(BaseIOReactor.java:211)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
12月 22 18:40:57 host-172-31-2-46 java[39247]: at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)
12月 22 18:40:57 host-172-31-2-46 java[39247]: ... 1 more
分析:由于方法现在目前是每条数据的插入es,数据量大了之后,es显示timeout
经查找发现
ES RestClient 底层是封装了HttpClient组件来是现实通过http方式访问远程ES服务,这个可以通过查看RestClient的 org.elasticsearch.client.RestClient#performRequestAsync() 这个方法得到验证,这个方法里有直接调用HttpClient的 org.apache.http.nio.client.HttpAsyncClient#execute() 这个方法。
由于Http协议底层是基于TCP协议来和对端网络建立连接,TCP协议建立网络连接需要经过三次握手,相对比较耗时,HttpClient为了提升性能,用连接池的方式对提交的连接请求进行管理,每次请求都从连接池里取连接,如果存在直接返回,如果不存在,放入队列等待。
通过查看代码TimeoutException是因为从连接池取连接超时,默认超时时间为无限时间。org.apache.http.client.config.RequestConfig.Builder#Builder可以在这里看到默认值。
经分析问题,可能由于大量插入数据,每次插入一条,然后线程池线程全部被用光,所以一直在等待直接timeout超时30s所以抛错
解决方法:扩大线程池基本核心线程数,和采用批量插入
解决方法:
1. 先确定插入数据量是否过大,插入大量数据需要批量插入,切勿单条插入。
由于Http协议底层是基于TCP协议来和对端网络建立连接,TCP协议建立网络连接需要经过三次握手,相对比较耗时,HttpClient为了提升性能,用连接池的方式对提交的连接请求进行管理,每次请求都从连接池里取连接,如果存在直接返回,如果不存在,放入队列等待,直到超过设置的timeout时间报错timeout超时。
2. 如果批量插入,仍然报错timeout就要适当的配置线程数和线程类型。
要在es的 yml配置文件配置
cached #无限制的线程池,为每个请求创建一个线程。这种线程池是为了防止请求被阻塞或者拒绝,其中的每个线程都有一个超时时间(keep_alive),默认5分钟,一旦超时就会回收/终止。
fixed #有着固定大小的线程池,大小由size属性指定,默认是5*cores数,允许你指定一个队列(使用queue_size属性指定,默认是-1,即无限制)用来保存请求,直到有一个空闲的线程来执行请求。如果Elasticsearch无法把请求放到队列中(队列满了),该请求将被拒绝。
scaling #可变大小的pool,大小根据负载在1到size间,同样keep_alive参数指定了闲置线程被回收的时间。
在yml配置文件中配置线程数
"threadpool.index.type":"fixed",
"threadpool.index.size": 100,
"threadpool.index.queue_size": 500
当然具体配置要适当根据业务修改,不要麻木复制
另外附上常用的es配置 参数 给大家 !!
https://blog.youkuaiyun.com/qq_38623939/article/details/111590899