第一次访问超时

来源:8-6 使用tomcat启动dubbo服务

qq_此生不换_24

2018-11-15

老师,我有的问题很奇怪,现象是:consumer 第一次访问provider 的服务总是会报错, 提示超时。dubbo自己有个超时机制,第二次 自己又能请求到provider的服务,但是这个时候controller 已经给客户端返回500了。

以下是报错信息:
-11-16 09:38:52,509 [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache(RequestMappingHandlerAdapter.java:534)] - [INFO] Looking for @ControllerAdvice: WebApplicationContext for namespace ‘agile-sign-web-servlet’: startup date [Fri Nov 16 09:38:51 CST 2018]; parent: Root WebApplicationContext
2018-11-16 09:38:52,716 [localhost-startStop-1] [org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:508)] - [INFO] FrameworkServlet ‘agile-sign-web’: initialization completed in 1394 ms
十一月 16, 2018 9:38:52 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler [“http-bio-8080”]
com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method deleteBusinesses in the service cn.agile.platform.core.service.IBusinessService. Tried 1 times of the providers [192.168.1.79:20880] (1/1) from the registry 192.168.1.117:2181 on the consumer 192.168.1.79 using the dubbo version 2.5.3. Last error is: Invoke remote method timeout. method: deleteBusinesses, provider: dubbo://192.168.1.79:20880/cn.agile.platform.core.service.IBusinessService?anyhost=true&application=agile-sign-web&check=false&dubbo=2.5.3&init=true&interface=cn.agile.platform.core.service.IBusinessService&methods=addBusiness,updateBusinessWithNo,deleteBusinesses,getBusinessWithId,getBusinessWithTemplateId,selectBusiness,getBusinessWithNo,deleteBusiness,updateBusinessInfo&pid=242936&retries=0&revision=0.0.1-SNAPSHOT&side=consumer&timestamp=1542332330745, cause: Waiting server-side response timeout by scan timer. start time: 2018-11-16 09:39:59.204, end time: 2018-11-16 09:40:00.206, client elapsed: 4 ms, server elapsed: 998 ms, timeout: 1000 ms, request: Request [id=1, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=deleteBusinesses, parameterTypes=[interface java.util.List], arguments=[[0d592d2421824cf3a233eb8107c1a5a4]], attachments={path=cn.agile.platform.core.service.IBusinessService, interface=cn.agile.platform.core.service.IBusinessService, version=0.0.0}]], channel: /192.168.1.79:64758 -> /192.168.1.79:20880
at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:101)
at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:227)
at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
at com.alibaba.dubbo.common.bytecode.proxy12.deleteBusinesses(proxy12.java)
at cn.agile.platform.core.web.controller.BusinessController.delete(BusinessController.java:396)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
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.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
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:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
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:1041)
at org.apache.coyote.AbstractProtocolAbstractConnectionHandler.process(AbstractProtocol.java:603)atorg.apache.tomcat.util.net.JIoEndpointAbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpointAbstractConnectionHandler.process(AbstractProtocol.java:603)atorg.apache.tomcat.util.net.JIoEndpointSocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2018-11-16 09:39:59.204, end time: 2018-11-16 09:40:00.206, client elapsed: 4 ms, server elapsed: 998 ms, timeout: 1000 ms, request: Request [id=1, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=deleteBusinesses, parameterTypes=[interface java.util.List], arguments=[[0d592d2421824cf3a233eb8107c1a5a4]], attachments={path=cn.agile.platform.core.service.IBusinessService, interface=cn.agile.platform.core.service.IBusinessService, version=0.0.0}]], channel: /192.168.1.79:64758 -> /192.168.1.79:20880
at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.returnFromResponse(DefaultFuture.java:188)
at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:110)
at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:84)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:96)
at com.alibaba.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:144)
at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:48)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:74)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:77)
… 45 more
2018-11-16 09:40:08,575 [DubboClientHandler-192.168.1.79:20880-thread-2] [com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:242)] - [WARN] [DUBBO] The timeout response finally returned at 2018-11-16 09:40:08.575, response Response [id=1, version=null, status=20, event=false, error=null, result=RpcResult [result=null, exception=null]], channel: /192.168.1.79:64758 -> /192.168.1.79:20880, dubbo version: 2.5.3, current host: 192.168.1.79
图片描述

写回答

2回答

风间影月

2018-11-15

如果用虚拟机,dubbo可能会去找对应的虚拟机ip,这个时候会请求不了,你看一下网络,然后把没用的ip禁掉

0
4
风间影月
回复
qq_此生不换_24
那你这情况真是奇怪了,没遇到过,你把截图发群里吧
2018-11-16
共4条回复

风间影月

2018-11-15

你看看报了什么错误信息

0
3
qq_此生不换_24
回复
风间影月
是的呀,很奇怪, 感觉现象就是:服务启动了,但是没有在zookeeper 上注册好, 当我第一次去访问provide服务了, 他才会王zookeeper 上注册。 然后后续就都能访问服务了
2018-11-16
共3条回复

ZK分布式专题与Dubbo微服务入门,成长与加薪必备

进阶中高级工程师必备技能,大数据与微服务最常用的中间件

1859 学习 · 321 问题

查看课程