现象:RPC请求一直超时异常如下
java.lang.RuntimeException: xxxRpcTimeOutException-null
分析:查看代码,可能是某个sql或者第三方服务调用超时造成的,查找该服务业务日志,没有发现任何异常日志数据!!这下子尴尬了,
1.机器load指标正常,为了恢复线上问题,重启集群,保留一台机器分析,为了防止该机器被线上流量调用,线上环境先屏蔽该机器。
2.因为没有任何异常日志打印,看下jstack有啥有用的信息没
jps -v
jstack 1893 |grep '${类名.方法名}'
没有找到相关信息,有可能线程可能已经结束了,尝试手动调用一次Rpc服务,重复步骤2,有调用栈信息输出
RpcBizProcessor-DEFAULT-8-thread-1" daemon prio=10 tid=0x000000000187b800 nid=0x1d86 runnable [0x000000005fccd000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)

博客讲述了在分析一次RPC服务调用异常时,发现没有异常日志,通过查看jstack、排查sql和事务配置,最终确定问题由事务切面配置错误导致,事务提交不及时造成sql阻塞。同时,讨论了为何Rpc未捕获到数据库超时异常,原因是Rpc请求超时与数据库阻塞的时间关系。
最低0.47元/天 解锁文章
274

被折叠的 条评论
为什么被折叠?



