专栏首页关忆北.1.Dubbo 常见错误及解决方法

1.Dubbo 常见错误及解决方法

1.Dubbo 常见错误及解决方法

地址找不到:No provider available 找不到服务,这时候可能有这么几种情况: Provider 服务没启动,或者注册中心Nacos宕机了。 Dubbo 的服务配置有误差,必须保证服务名,组别(默认是 Dubbo ),version 三者都正确。 排查: 访问注册中心的 Ops 系统,查询对应的服务是否有提供者列表;同时检查调用者应用所在服务器的日志(一般每种注册服务的客户端都会有对应的日志记录),查看是否有地址信息的推送/拉取记录。 如无,则表明发布者发布服务失败,检查发布者的应用启动是否成功。

如有服务,则检查调用者应用所连接的注册中心,确认跟预期的环境要匹配。

调用超时:client-side timeout 一般超时是调用端发生在请求发出后,无法在指定的时间内获得对应的响应。原因大概有以下几种情况: 服务端确实处理比较慢,无法在指定的时间返回结果,调用端就自动返回一个超时的异常响应来结束此次调用。 服务端如果响应的比较快,但当客户端 负载很高,负载压力很大的时候,会因为客户端请求发不出去、响应卡在 TCP Buffer 等问题,造成超时。因为客户端接收到服务端发来的数据或者请求服务端的数据,都会在系统层面排队,如果系统负载比较高,在内核态的时间占比就会加长,从而造成客户端获取到值时已经超时。 排查 在调用超时的方法代码逻辑里加入时间逻辑:

long start = System.currentTimeMillis();
//逻辑代码
long end = System.currentTimeMillis();
log.info("文件上传调用时间是{}",end-start);

这样就可以查看当前超时方法的调用时间了,分析Dubbo调用超时的原因,根据业务的实际调用时间在代码中设置timeout时间。当然也有可能是网络状况的原因导致超时。 序列化失败:HessianRuntimeException 排查: 检查方法的入参是否实现 Serializable 接口。 检查服务方法的传入传出参数是否继承了 Number、Date、ArrayList、HashMap 等 Hessian 特殊化处理的类。

2.Java断言

语法1:assert expression; //expression代表一个布尔类型的表达式,如果为真,就继续正常运行,如果为假,程序退出 语法2:assert expression1 : expression2;

//expression1是一个布尔表达式,expression2是一个基本类型或者Object类型,如果expression1为真,则程序忽略expression2继续运行;如果expression1为假,则运行expression2,然后退出程序。

assertEquals(true, StringUtils.isEmpty(user.getName));
第一个参数是true,就是断言的期望值,看逗号后边的另一个参数的结果,如果结果为true,就是期望值,返回期望值。

assertNotNull(name);
判断参数是否不为空,如果name为空,在这行跳出执行。
如果name不为空,则继续执行代码。

断言可以配合枚举类使用。 断言可以检查运行结果。 断言失败时会抛出 AssertionError,导致程序结束退出。因此,断言不能用于可恢复的程序错误。 虽然断言返回的是 boolean 值,但是并不能将其作为条件判断语句。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Dubbo 常见错误及解决方法

    Dubbo 作为高性能 RPC(Remote Procedure Call)框架已经成为 Apache 的顶级项目,意味着在全球被数以千计的公司所采用来其实现...

    kirito-moe
  • Maven常见错误及解决方法(一)

    Cannot upgrade/downgrade to Dynamic Web Module 3.0 facet. It is incompatibil...

    用户5640963
  • Mysql常见错误提示及解决方法

    130 :文件格式不正确。(还不是很清楚错误的状况) 145 :文件无法打开。1005:创建表失败。1006:创建数据库失败。 1007:数据库已存在,创建...

    全栈程序员站长
  • python中常见错误及解决方法

    先要给a赋值。才能使用它。在实际编写代码过程中,报NameError错误时,查看该变量是否赋值,或者是否有大小写不一致错误,或者说不小心将变量名写错了。

    砸漏
  • 云通信产品常见的SSL相关错误及解决方法

    SSL协议在当今的网络信息传输过程中起到了不可替代的作用,使用不对称加密技术实现会话双方之间信息的安全传递,实现信息传递的保密性、完整性,并且会话双方能鉴别对方...

    孙天骄
  • SoapUI|常见错误及问题

    1.如何设置在testcase中如果某个teststep发生错误仍运行完其他steps

    测试邦
  • rsync 常见错误与解决方法整理

    由于我们经常使用rsync进行服务器文件的同步工作,但在配置过程中,会出现很多问题,下面的错误基本上都是通过客户端返回的错误进行分析 我们都是通过错误日志查看 ...

    老七Linux
  • Greenplum 常见错误及解答方式

    小徐
  • (Servlet)常见错误及解决方式

    ·404数字 指的是:服务器执行完客户端的请求后,返回给客户端一个执行结果的状态编码。

    qubianzhong
  • BlueHost SSH连接常见错误和解决方法

    SSH 为 Secure Shell 的缩写,SSH 是目前较可靠专为远程登录会话和其他网络服务提供安全性的协议。SSH 协议可以有效防止远程管理过程中的信息泄...

    主机侦探
  • StackOverFlowError 常见原因及解决方法

    每一个 JVM 线程都拥有一个私有的 JVM 线程栈,用于存放当前线程的 JVM 栈帧(包括被调用函数的参数、局部变量和返回地址等)。如果某个线程的线程栈空间被...

    用户1516716
  • Android开发常见错误及技巧

    1、无法使用网络:Permission denied(maybe missing internet permission)

    全栈程序员站长
  • maven编译常见错误解决方法整理

    当maven项目里面有用到JDK内部的一些类,接口(如:com.sun.xml.internal.ws.spi.ProviderImpl)等的时候,用maven...

    流柯
  • WCF-OracleDB adapter常见错误解决方法

    Microsoft.ServiceModel.Channels.Common.MetadataException: Invalid argument: <Bts...

    阿新
  • MapperReduce常见错误及解决方案

    1)导包容易出错。尤其Text和CombineTextInputFormat。 2)Mapper中第一个输入的参数必须是LongWritable或者NullW...

    孙晨c
  • Hive常见错误及解决方案

    1.SecureCRT 7.3出现乱码或者删除不掉数据,免安装版的SecureCRT 卸载或者用虚拟机直接操作或者换安装版的SecureCRT

    不温卜火
  • JDBC常见错误及解决方案

    最近很多同学在数据库编程这一块遇到了很多的问题,各种问题都有,但却苦于不知道怎么解决这些问题,以至于编程效率非常低。今天我就来总结一下在数据库编程时经常遇到的问...

    企鹅号小编
  • Maven常见使用问题及解决方法

    本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    十毛

扫码关注腾讯云开发者

领取腾讯云代金券