-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
提高qps,http通道显示BROKEN #1271
Comments
似乎是个client实现的隐藏bug,不局限于http,我们遇到的现象:
|
对。。我们http client出现问题的时候。redis client 也跟着一起恶化了。只是没http严重 |
哪个brpc版本? wrr + ns具体如何配置的?用example/redis_c++能复现吗? |
0.9.7, ns是内部的和bns实现差不多,单独比较难复现,一般在一天流量高峰时触发一次。(改过rr + ns也一样) |
用的是连接池? |
CONNECTION_TYPE_POOLED 和pipeline方式都试过, 观察的是pipeline更容易触发上面的问题 |
E112是lb选不出健康节点了。服务本身负载怎么样呢?有没有开启熔断功能? |
可能高峰时server负载也比较高吧。 但client最后全部陷入E112错误无法恢复, redis server的这时压力是0
caidj <notifications@github.com> 于2020年10月21日周三 上午11:27写道:
… E112是lb选不出健康节点了。服务本身负载怎么样呢?有没有开启熔断功能?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#1271 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AABWMT44SORPGSRQCU7SO2LSLZILRANCNFSM4SYJS7IQ>
.
--
yinqiwen
|
@yinqiwen ChannelOptions.timeout_ms 和 ChannelOptions.connect_timeout_ms 这两个选项的值分别设置了多少? |
connect timeout未设置
rpc timeout 50ms
gydong <notifications@github.com> 于 2020年10月21日周三 下午12:42写道:
… ChannelOptions.timeout_ms 和 ChannelOptions.connect_timeout_ms
这两个选项的值分别设置了多少?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#1271 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AABWMTZP47Z4W4IQZEMHIWLSLZRDFANCNFSM4SYJS7IQ>
.
|
ChannelOptions.connect_timeout_ms 设置成30ms,看看是否还能复现你之前的问题 |
连接断开。brpc client会自动重连吗? 另外我们下游只有一个固定ip和端口。pooled的方式有没有问题? |
是代码里和这个有关? 另外有个服务设置了connect_timeout_ms = 500 也有同样的现象 |
我记得之前有个问题是如果connect timeout设置的比timeout大,则会导致一直触发rpc timeout而走不到连接超时的控制逻辑。我在应用过程中,之所以没遇到这个问题,是因为我们开启了熔断,规避了这个问题。 |
所以开启enable_circuit_breaker也能解决? 我们回头都试下 |
@gydong 下游只有一个地址的。。能熔断吗。熔断就没了 |
回头看了下,有个服务设置rpc timeout 300ms, connect timeout未设置(默认是200)仍然有这个问题 |
是熔断会导致这个问题,返回EHOSTDOWN(E112),你的case是直连的单个地址吗?没有使用名字服务? |
@yinqiwen 请问你那边有啥进展吗? |
还能重现 |
http 默认是连接池,broken的时候应该会把池子里所有的连接都关掉,是不是出现反复broken的现象了 |
我们只有一个下游地址。想问一下,brpc所谓的HTTP链接池指的是一个远程ip端口是一个连接,多个下游组成池。还是一个远程ip和端口的时候也会自动建立多个连接? |
一个远程ip和端口的时候也会自动建立多个连接,连接池的最大连接数量可以通过 max_connection_pool_size 配置 |
@TousakaRin 能通过改成 single 单链接的方式解决吗?我试了一下CallMethod(异步调用)会core。。 |
一个方式是修改max_connection_pool_size ,将连接池的大小改小,这个改动是全局的。 |
@guodongxiaren 老哥解决了吗? 我在一个server里需要用到client来发送和下载图片,qps高一点的时候也遇到了这个情况。 |
在高qps下,我也遇到了这个问题,辛苦有进展后在这里同步下 |
|
@yinqiwen |
Describe the bug (描述bug)
50qps左右。通过brpc自带的监控页面看http下游是BROKEN状态。下游性能没问题。
打印controller的错误码为:112。链接下游异常。其实下游没问题。
To Reproduce (复现方法)
压测升到qps。实际也不是特别高的qps。几十而已。
Expected behavior (期望行为)
Versions (各种版本)
OS:
Compiler:
brpc:
protobuf:
Additional context/screenshots (更多上下文/截图)
The text was updated successfully, but these errors were encountered: