Client端latency_us远超过timeout
Describe the bug (描述bug)
查询持续请求存储节点,返回超时报错:
设置的timeout为115ms,但是统计的timeCostUs_(即latency_us)已经达到5s;
后面持续返回timeout,且latency_us越来越大,甚至达到20s
对于client端,latency_us包括哪些时间?有办法统计到内部各个阶段的时间吗(例如在接收队列排队时间)?
To Reproduce (复现方法) 只在某个机器上能复现出来,换了台机器就不会出现
Expected behavior (期望行为) 应该超时时立即返回? Versions (各种版本) OS: Compiler:gcc (GCC) 9.2.1 20200522 (Alibaba 9.2.1-3 2.17) brpc: protobuf:
Additional context/screenshots (更多上下文/截图)
可以打开rpcz,然后在查询时根据lantecy进行过滤超过500ms的请求,一般来说很容易看到。另外可以检查以下代码里是否使用了brpc的timer功能并且在callback里使用了可能阻塞的代码(不管是阻塞bthread还是phtread都可能会导致这个问题)
可以打开rpcz,然后在查询时根据lantecy进行过滤超过500ms的请求,一般来说很容易看到。另外可以检查以下代码里是否使用了brpc的timer功能并且在callback里使用了可能阻塞的代码(不管是阻塞bthread还是phtread都可能会导致这个问题)
看了下bvar但是不清楚为什么负载这么高,此外还观察到了brpc的报错controller.cpp:327] timeout_ms is limited to 0x7fffffff (roughly 24 days),不知道有没有关联
rpc_timeout_ms很长会导致bthread阻塞吗?