Ray

Results 188 comments of Ray

我觉得有两个办法解决这个问题: 1、排查问题时,**如果只关心业务异常**,可以`grep -v 'MotanFrameworkException'`去掉motan框架日志。 2、可以实现`LogService`接口,替换掉LoggerUtil中的默认实现,这样可以在log日志时对异常做定制化处理。 建议通过方式1解决。

估计是跟网络有关,可以确认一下server注册时自动获取的ip是否正确,有无配置虚拟网卡,或者直接使用telnet在client端直连一下试试看网络是否正常 另外可以确认一下是完全无法建立链接,还是定期出现这样的异常?如果是偶发异常client端调用应该是可以成功的

client端只会链接server端在注册中心注册的端口,Connection timed out这个异常应该是client端与server端建立链接时发生的吧?可以配置一下connectTimeout试试,默认是1s Connection reset by peer一般来讲是对端关闭了链接,可以确认一下client端有没有关闭链接的记录。如果网络状况不好,可以把requestTimeout调大一些试试。

remote是指client端与server建立链接的端口,这个没有影响。你可以按照我上面说的把那两个超时调大点试试

Connection reset by peer应该是client已经断开的链接,server端仍有写入,可以在client端debug一下netty,看看链接的建立与关闭有没有什么可疑的地方吧。偶发下这种情况对client端的请求应该不会造成影响

这个是client端的一个自我保护机制。 `线上服务不允许出现一个服务池没有任何可用的节点`的情况,因为此时服务一定是不可用的。注册中心显示不可用,但实际节点有可能还是可用的,这个保护机制可以防止server与注册中心之间出现机房网络抖动,导致所有服务都被摘除这种特例情况。

可以参考这个看看 https://github.com/weibocom/motan/issues/656 看看心跳开关是否打开,看看server端是否已经在consul上正确注册了

使用motan2协议时,可以通过CommonHandler来实现与泛化调用类似的能力。可以参考[这里](https://github.com/weibocom/motan/blob/f36fce999ed4717ca736dbecc7ef0c0a087439c2/motan-demo/motan-demo-client/src/main/java/com/weibo/motan/demo/client/Motan2RpcClient.java#L58)

不要在根pom中配置generated-sources,要在需要生成异步类的module的pom.xml中配置,可以参考[demo模块](https://github.com/weibocom/motan/blob/master/motan-demo/motan-demo-api/pom.xml)的pom配置,这个子模块的`MotanDemoServiceAsync`类是通过异步注解生成的。