Случайный javax. net .ssl.SSLHandshakeException: «Закрытое соединение удаленного хоста во время рукопожатия» на GCP - PullRequest
0 голосов
/ 15 апреля 2020

У нас есть приложение, которое работало в среде AWS в течение нескольких лет, недавно мы мигрировали его в GCP Kubernetes, и это странное поведение возникает случайным образом, когда одно приложение пытается связаться с другим, иногда происходит, иногда нет, некоторые дней это длится от 4 до 6 часов, и они внезапно исчезают. Мы проверили сертификаты, https.protocol, который мы использовали как export JAVA_OPTS="-Dhttps.protocols=SSLv3,TLSv1,TLSv1.1,TLSv1.2, связь использует org.springframework.web.client RestTemplate. У кого-нибудь была похожая проблема в среде GCP? Как ее решить?

Ошибка StackTrace:

Анализ ошибки responsecom.google.common.util.concurrent.UncheckedExecutionException: org.springframework.web.client.ResourceAccessException: ошибка ввода-вывода при запросе GET для " https://xxxx/content/6 ": удаленный хост прервал квитирование; вложенным исключением является javax. net .ssl.SSLHandshakeException: удаленный хост прервал квитирование

com.google.common.util.concurrent.UncheckedExecutionException: org.springframework.web.client.ResourceAccessException: I/O error on GET request for 
https://xxxxxx/content/6": Remote host terminated the handshake; nested exception is 
        javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake at 
    com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051) at 
    com.google.common.cache.LocalCache.get(LocalCache.java:3953) at 
    com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3976) at 
    com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4960) at 
    com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4966) at 
    com.demo.simulator.ExternalSimulatorService.getSimulatedContent(ExternalSimulatorService.java:42) at 
    com.demo.framework.holder.connector.impl.AbstractConnector.loadResponseFromSimulator(AbstractConnector.java:78) at 
    com.demo.framework.holder.connector.impl.AbstractConnector.call(AbstractConnector.java:39) at 
    com.demo.service.processor.ConsumerProcessor.process(ConsumerProcessor.java:131) at 
    com.demo.processor.AbstractProcessor.execute(AbstractProcessor.java:18) at 
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) at 
    com.demo.processor.BasicExecutor.executeChainProcessors(BasicExecutor.java:49) at 
    com.demo.processor.BasicExecutor.execute(BasicExecutor.java:34) at 
    com.demo.service.controller.ApiReportController.getResponseUsingRequestAndResponse(ApiReportController.java:208) at 
    com.demo.service.controller.ApiReportController.getResponseUsingRequestAndResponseV1Format(ApiReportController.java:137) at 
    jdk.internal.reflect.GeneratedMethodAccessor106.invoke(Unknown Source) at 
    java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at 
    java.base/java.lang.reflect.Method.invoke(Method.java:566) at 
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) at 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) at 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) at 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) at 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800) at 
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) at 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) at 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) at 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) at 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:660) at 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) at 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at 
    org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88) at 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at 
    com.demo.ic.core.analytics.decisionportal.interactioncontext.InteractionContextInitializationFilterProxy.doFilterInternal(InteractionContextInitializationFilterProxy.java:171) at 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) at 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) at 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:154) at 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92) at 
    org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77) at 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) at 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at 
    org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) at 
    org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) at 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) at 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at 
    org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114) at 
    org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104) at 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at 
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at 
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at 
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at 
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at 
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) at 
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at 
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639) at 
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at 
    java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at 
    java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at 
    java.base/java.lang.Thread.run(Thread.java:834) **Caused by: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://xxxxxxx/content/6": Remote host terminated the handshake; nested exception is javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake** at 
    org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:744) at 
    org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670) at 
    org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:311) at 
    com.demo.simulator.ExternalSimulatorService$1.load(ExternalSimulatorService.java:83) at 
    com.demo.simulator.ExternalSimulatorService$1.load(ExternalSimulatorService.java:64) at 
    com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529) at 
    com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278) at 
    com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155) at 
    com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045) ... 104 common frames omitted **Caused by: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake at** 
    java.base/sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1321) at 
    java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1160) at 
    java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1063) at 
    java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402) at 
    java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at 
    java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at 
    java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:163) at 
    org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:76) at 
    org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) at 
    org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) at 
    org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:735) ... 112 common frames omitted Caused by: java.io.EOFException: SSL peer shut down incorrectly at 
    java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:167) at 
    java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:108) at 
    java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...