yanghongchao
yanghongchao
Sorry,I am Chinese. I mean that in C++98, the word 'linux' should not be used as a variable, you should change FA::Linux to support C++98. In addition, "anim", taking up...
As a Green hand (菜鸟),I learned from your answer! You are a good teacher,Thanks!!!
@chenBright @wwbmmm 大佬~
有道理,这样的话,一定时期内都是EAGAIN,while里就可以判定连接断开,然后return结束,避免hang在这里。 但是server的连接资源怎么释放?如果sever配置了ServerOptions.idle_timeout_sec=100, 那么超过100s后,server会把该连接释放吗?
> tcp_user_timeout brpc目前还没支持tcp_user_timeout吧。 另外brpc::StreamClose也释放不了,对吧。
> > 另外brpc::StreamClose也释放不了,对吧。 > > 可以释放的。 > > > brpc目前还没支持tcp_user_timeout吧 > > 后续提个PR支持tcp_user_timeout。 👍🏻
> 容灾方面是不是可以全面一点? (周期或者滑动窗口)统计请求的成功率,根据成功率可以做以下策略: > > 1. lb选实例时,减少访问可用性弱的实例; > 2. 减少重试(包括backup request)。 > 3. 其他,待补充。 1. lb可以参考现有的la或者通过LoadBalancerExtension()->RegisterOrDie("namexxxx", new LBXXX)自定义新的。 2. 但减少重试是个lazy行为,一开始发起A、B、C请求都配上backup_request,到backup_request_ms后,A已完成,只有B、C需要backup_request,假如此时只允许50%触发backup_request。就得在HandleBackupRequest里一开始拦截一下,避免触发EBACKUPREQUEST。这个feature需要支持下。
不在HandleBackupRequest里及时拦截的话,backup_request就发给下游server了,可能造成单server请求暴增。 ChannelOptions加backup_request_policy,是打散backup_request_ms吗?现在controller就可以设置请求粒度的backup_request_ms。而且 **backup_request最好是在< backup_request_ms内没响应的多个请求中选择触发某几个**。
最简单的可以是允许backup_request_ms时未响应request做随机拦截,随机数可以做到,比如未响应请求里面只允许10%做去做backup_request。或者按请求优先级,这个先忽略。 因为一开始发请求时,哪些请求在backup_request_ms未响应是未知的,所以都controller set_backup_request_policy,等backup_request_ms时间到了,此时怎么做10%真正触发backup_request呢?