52coder

Results 7 comments of 52coder

@cdjingit 去掉了例子中的sleep,增大了qps也没有触发熔断,学习了这个[issue](https://github.com/apache/incubator-brpc/issues/387),有点不太理解熔断跟qps的关系,有没有触发熔断的机制详细介绍?

@TousakaRin @cdjingit 有事情耽误,今天有空看了下,其中一个server回包的时候设置了cntl->SetFailed(brpc::EREQUEST, "Fail to parse request");,没有触发熔断的日志,server还能源源不断收到请求。 超时熔断验证没问题,现在失败率(可选)熔断使用example中的例子没有验证通过,业务中暂时没有开启。

@TousakaRin 代码就是使用的example中的例子 原始代码:https://github.com/52coder/incubator-brpc/tree/master/example/asynchronous_echo_c%2B%2B client.cpp修改点: https://github.com/52coder/incubator-brpc/blob/master/example/asynchronous_echo_c%2B%2B/client.cpp#L65 添加: options.enable_circuit_breaker = true; L30行修改为rr : DEFINE_string(load_balancer, "rr", "The algorithm for load balancing"); server.cpp在改动前,先编译出来echo_server,然后在[https://github.com/52coder/incubator-brpc/blob/master/example/asynchronous_echo_c%2B%2B/server.cpp#L63前面增加如下代码: cntl->SetFailed(brpc::EREQUEST, "Fail to parse request"); 然后编译出二进制echo_server_fail,这里的想法是生成一个100%失败的server触发熔断。

> 可以贴一下完整的代码么,我在server端添加`cntl->SetFailed(brpc::EREQUEST, "Fail to parse request");`之后,在client看到的日志是`W0822 11:08:00.715427 748755 client.cpp:90] [E1003][10.227.87.49:8000][E1003]Failed to parse request`,而你贴的日志是Fail to **send** EchoRequest, 比较奇怪。 代码是拷贝的asynchronous_echo_c++目录,修改代码是和你的https://github.com/TousakaRin/brpc/tree/circuit_breaker_test代码一样,除了没有dummy_server.port这个文件,client端打印client.cpp:42] Fail to send EchoRequest, [E1003][127.0.1.1:8003][E1003]Failed to parse request也是正常的吧,因为server端的回报设置了failed,打印这个应该没问题。 重新检查了一遍,其中一个server 100%失败,跑半小时还是没有触发熔断。

@TousakaRin 不知道我得测试方法是否有问题,和你的代码一样(缺少了dummy_server.port),server端编译出来两个版本,一个包含cntl->SetFailed(brpc::EREQUEST, "Failed to parse request");,一个不包含这行代码: ./echo_server_ok --port=8001 ./echo_server_fail --port=8002 client.cpp中DEFINE_string(server, "list://0.0.0.0:8001,0.0.0.0:8002", "IP Address of server"); ./echo_client 直接运行 server和client运行在同一台ubunut物理机上面,使用的brpc版本(包含你提到的那个代码): root@52coder:~/incubator-brpc/example/enable_circuit_breaker_c++# git branch * (HEAD detached at 1.2.0) master 辛苦帮review下,实在没看出哪里有问题导致没有触发熔断? client终端输出一直是(20min+):...

编译信息及文件列表: make之后文件列表: root@52coder:~/incubator-brpc/example/enable_circuit_breaker_c++# ls -lt total 373920 -rwxr-xr-x 1 root root 95129344 8月 27 23:13 echo_server -rwxr-xr-x 1 root root 95059624 8月 27 23:13 echo_client -rw-r--r-- 1 root root 496992...

function gets is not safe,had better not using it.