brpc icon indicating copy to clipboard operation
brpc copied to clipboard

Client端latency_us远超过timeout

Open duishuhaoqi opened this issue 2 years ago • 5 comments

Describe the bug (描述bug) 查询持续请求存储节点,返回超时报错: image 设置的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 (更多上下文/截图)

duishuhaoqi avatar Dec 28 '23 02:12 duishuhaoqi

image

duishuhaoqi avatar Dec 28 '23 02:12 duishuhaoqi

可以打开rpcz,然后在查询时根据lantecy进行过滤超过500ms的请求,一般来说很容易看到。另外可以检查以下代码里是否使用了brpc的timer功能并且在callback里使用了可能阻塞的代码(不管是阻塞bthread还是phtread都可能会导致这个问题)

TousakaRin avatar Dec 28 '23 03:12 TousakaRin

可以打开rpcz,然后在查询时根据lantecy进行过滤超过500ms的请求,一般来说很容易看到。另外可以检查以下代码里是否使用了brpc的timer功能并且在callback里使用了可能阻塞的代码(不管是阻塞bthread还是phtread都可能会导致这个问题)

看了下bvar但是不清楚为什么负载这么高,此外还观察到了brpc的报错controller.cpp:327] timeout_ms is limited to 0x7fffffff (roughly 24 days),不知道有没有关联

duishuhaoqi avatar Jan 18 '24 09:01 duishuhaoqi

image

duishuhaoqi avatar Jan 18 '24 09:01 duishuhaoqi

rpc_timeout_ms很长会导致bthread阻塞吗?

duishuhaoqi avatar Jan 18 '24 11:01 duishuhaoqi