使用dubbo开发项目的时候,经常会发生超时问题,信息如下
Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2017-07-14 13:27:34.831, end time: 2017-07-14 13:27:39.832, client elapsed: 0 ms, server elapsed: 5001 ms, timeout: 5000 ms, request: Request [id=576670, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=findBJQByCode, parameterTypes=[class java.lang.String, class java.lang.String], arguments=[99123], attachments={input=356, path=com.anne.bqj.service.BqjService, interface=com.anne.bqj.service.BqjService, timeout=5000, version=1.0.0}]], channel: /192.168.1.110:34443 -> /192.168.1.110:20880
经过测试,greys跟踪得知,是dubbo的monitor的问题。主要超时的方法是dubbo的getIP方法,monitor每隔一段时间收集数据的时候都要根据域名获取zk的IP,这一步耗时很长。
public String getIp() {
if (ip == null) {
ip = NetUtils.getIpByHost(host);
}
return ip;
}
现在改了dubbo的源码,monitor每次收集数据的时候不获取zk的ip,直接用域名。增加如下方法,
public String toServiceString(boolean useIP){
return buildString(true, false, useIP, true);
}
修改AbstractMonitorFactory的方法
public Monitor getMonitor(URL url) {
url = url.setPath(MonitorService.class.getName()).addParameter(Constants.INTERFACE_KEY, MonitorService.class.getName());
String key = url.toServiceString(false);
LOCK.lock();
try {
Monitor monitor = MONITORS.get(key);
if (monitor != null) {
return monitor;
}
monitor = createMonitor(url);
if (monitor == null) {
throw new IllegalStateException("Can not create monitor " + url);
}
MONITORS.put(key, monitor);
return monitor;
} finally {
// 释放锁
LOCK.unlock();
}
}
分享到:
相关推荐
然而,在某些特定场景下,Dubbo的服务调用可能会出现超时问题,进而引发雪崩效应。 #### 二、问题描述 根据给定的信息,“Dubbo超时机制导致的雪崩连接”主要指的是在Dubbo服务调用过程中,由于某种原因导致调用...
《Dubbo服务提供与消费的实战演示》 在分布式系统中,Dubbo作为一个高性能、轻量级的服务框架,被广泛应用...通过深入学习和实践,开发者可以更好地应对复杂分布式环境中的服务调用问题,提高系统的可扩展性和稳定性。
主要介绍了dubbo中zookeeper请求超时问题:mybatis+spring连接mysql8.0.15的配置,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
一旦某个服务出现问题,调用该服务的其他服务将会持续不断地尝试调用直至超时,这样不仅会造成大量系统资源的浪费,还可能导致调用者服务由于长时间等待响应而变得不可用,进一步影响整个系统的稳定性和可用性。...
dubbo.xsd文件,用于解决dubbo配置报错。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
解决dubbo启动报错,加载失败问题。
解决springboot 中 dubbo配置的报错问题 dubbo XML Schema 文件
【标题】"dubbo资源 dubbo-admin dubbo demo" 提供...同时,通过Dubbo-admin的实际操作,可以提高运维效率,确保服务的稳定性和可靠性。对于希望深入理解微服务架构和实践的开发者来说,这份资源无疑是宝贵的参考资料。
【Dubbo稳定性:Nacos注册中心可用性问题复盘】 在分布式系统中,服务的稳定性和可用性至关重要。本文以一个具体的案例分析了Dubbo框架与Nacos注册中心的配合中遇到的问题,揭示了在Nacos服务器宕机时,如何影响...
本文将详细解析"标题"和"描述"中提到的"Dubbo.xsd"文件及其在解决Dubbo标签识别问题中的作用。 首先,我们需要理解XML Schema(简称XSD),它是一种用于定义XML文档结构和数据类型的规范。XSD文件定义了XML元素、...
当我们在项目中使用Dubbo时,可能遇到XML配置文件无法正确解析的问题。这通常是因为缺少了对应的xsd文件,导致XML解析器无法理解配置文件中的标签和属性。例如,如果没有`dubbo.xsd`,XML解析器就无法识别像`<dubbo:...
记一次Dubbo超时&CPU高负载问题排查 1.问题背景 最近经常有同事反馈我们灰度环境老的交易系统,这里简称trade,dubbo消费者调用其他服务超时,因为该项目维护人员众多,加上灰度环境发布较多,一直没有排查,然后...
【Dubbo 示例代码详解】 Dubbo 是阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,它主要提供了RPC(远程过程调用)服务,并且包含了服务注册与发现、负载均衡、容错处理、监控等全面的服务治理功能。本示例...
- 问题修复:修复了已知的bug和安全问题,增强了系统的稳定性。 - 兼容性增强:可能对与其他框架或库的兼容性进行了优化,如Spring Boot、Spring Cloud等。 - 文档更新:提供了更详尽的用户指南和开发文档,帮助...
2. **异常报警**:当服务出现异常时,如超时、失败率上升等,Dubbo-Monitor可以通过配置发送报警通知,确保问题能得到及时处理。 3. **调用详情**:可以查看每个具体调用的详细信息,包括调用时间、调用耗时、参数...
dubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo...
【标题】"dubbo admin jdk1.8" 指的是使用Java开发工具包(JDK)1.8版本运行的Dubbo管理控制台。Dubbo是阿里巴巴开源的一个高...同时,了解如何正确配置和使用Dubbo Admin,有助于提升微服务的运维效率和问题排查能力。
在使用Dubbo时,我们经常会遇到XML配置文件中的标签无法被识别的问题,这通常是因为缺少了对相关XML Schema定义的引用。这里的"**dubbo.xsd**"就是解决这个问题的关键。 XML Schema(简称XSD)是一种用于定义XML...
理解这些配置有助于我们精准控制服务的行为,例如设置服务的超时时间、重试次数、线程池大小等,从而优化系统的性能和稳定性。 在实际操作中,我们常常需要参考“dubbo培训PPT”,如`Dubbo培训与实战.pptx`,它通常...
3. **负载均衡**:Dubbo内置了多种负载均衡策略,如随机、轮询、最少活跃调用量、一致性哈希等,可以根据实际场景选择合适的策略。 4. **容错机制**:Dubbo提供了多种容错策略,如失败快速失败、重试、FallBack、...