瓜农老梁

一个想分享点干货的家伙,微信公众号「瓜农老梁」

0%

gRPC11# 超时问题定位

客户端AppTaxiNormalService调用服务Appxxx发生超时,长达50秒。

客户端等待中取消请求,发生调用时间为:2021-11-02 22:11:59.148

该服务基本上在同一时间段发起向下游的服务均发生超时。

队列显示瞬间增加很多任务

磁盘IO和CPU都有上升

线程dump情况,通信线程调用到了SynchronizationContext,底层的work通信线程怎么调用到了获取节点的业务方法去了。

代码中有使用SynchronizationContext

SynchronizationContext使用的queue是ConcurrentLinkedQueue队列,被单线程串行执行。

再回到上面的线程栈,业务节点发现事件和gRPC底层通信共用了SynchronizationContext造成阻塞,和线程错乱执行。