全部产品

常见问题

更新时间:2020-04-10 16:37:42

本文汇总了 SOFARPC 使用过程中的一些常见问题及其解决方案。


RPC 单次传输的数据量是否有限制

本身没有限制,考虑性能,建议 4k 以内。如果超过,在高并发场景下,可能出现一些overflow的问题,报错关键字为 maybe write overflow 。建议通过以下系统参数计算实际需要的大小:

参数 默认值
-Dbolt.netty.buffer.low.watermark 32 * 1024
-Dbolt.netty.buffer.high.watermark 64 * 1024

RPC-02306: Cannot get the service address of service

现象

dev 环境 rpc 调用出错,用户调用时,middleware_error.log 报错找不到服务地址

原因

属性配置中打开了直连开关,而代码中配置的 url 与实际 RPC 服务地址不符。

  • application-dev.properties 中配置 run.mode=test
  • 代码中配置 test-url=“${servicename_tr_service_ur}”
  • servicename_tr_service_ur 指向的地址与实际的 RPC 服务地址不符。
  • RPC provider 与 consumer 工程的 SOFABoot 版本不一致。

示例如下:找不到服务地址

解决方案

  • application-dev.properties 中注释掉 run.mode=test
  • 将 RPC provider 与 consumer 工程的 SOFABoot 版本升级至同一版本。参见 SOFABoot 版本说明

每次 RPC 调用都耗时很长,明显超时却不报超时异常

现象

  • SOFA RPC 使用 REST 接口触发 RPC 的泛化调用,每次触发都需要 30 秒的时间,且不超时。
  • 从业务日志来看,开始处理业务和结束业务之间确实花了 30 秒。

原因

可能由于 DNS 配置错误,导致超时。

解决方案

/etc/hosts 中添加 IP 与主机名的映射,尝试解决该问题。


RPC 注册不成功

现象

如题

原因

application.properties 文件中的 run.mode 设置成了 dev

解决方案

删除 run.mode 配置或者将其设置成 normal


RPC 应用启动报错:Can’t find BindingConverter of type binding.tr

现象

出现如下报错:

  1. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'secretFacade': Invocation of init method failed; nested exception is com.alipay.sofa.runtime.api.ServiceRuntimeException: Can't find BindingConverter of type binding.tr

原因

rpc-enterprise-sofa-boot-starter 被注释掉了。而这个 jar 包提供了如下 binding:

  • rpc-enterprise-sofa-boot/3.2.2/rpc-enterprise-sofa-boot-3.2.2.jar!/com/alipay/boot/sofarpc/converter/TrBindingConverter.class
  • rpc-sofa-boot/3.2.2/rpc-sofa-boot-3.2.2.jar!/com/alipay/sofa/rpc/boot/runtime/converter/BoltBindingConverter.class

解决方案

引入 rpc-enterprise-sofa-boot-starter jar 包。


Tr 接口找不到服务地址

现象

如题

原因

仅客户端迁移至了共享中间件,服务端并未迁移。

解决方案

将服务端迁移到共享中间件。