brpc icon indicating copy to clipboard operation
brpc copied to clipboard

brpc服务端下电一个节点,brpc客户端并没有重新选择链接,持续上报EPOLLOUT错误,连接超时。

Open chigo-zhao opened this issue 1 month ago • 6 comments

Describe the bug 出现问题的场景:brpc服务端下电一个节点,brpc客户端并没有重新选择链接,持续上报EPOLLOUT错误,连接超时。 Image 待brpc服务端重新上电后,客户端连接恢复。

Image

To Reproduce 目前只遇到过一次

Expected behavior 期望brpc重新发起socket连接,并且连接成功,而不是一直等待原节点。

Versions OS:ubuntu Compiler:g++ brpc:1.9 protobuf:

Additional context/screenshots

chigo-zhao avatar Nov 10 '25 09:11 chigo-zhao

socket只有会健康检查成功后才能继续使用,否则该socket不会被使用的,即会选择其他节点发起RPC。

第一张图是健康检查时连接超时的日志,并不是发起RPC的。

chenBright avatar Nov 29 '25 14:11 chenBright

但事实上,对应节点都下电了,一直上报下电节点健康检查失败(超时),没有选择其他节点发起rpc

chigo-zhao avatar Dec 01 '25 01:12 chigo-zhao

Controller::ErrorText有信息显示这个情况吗?

健康检查是在独立的bthread做的,健康检查检查失败日志不代表使用该节点发起RPC。

chenBright avatar Dec 01 '25 04:12 chenBright

Channel::Init的时候用的是单节点还是服务名?

chenBright avatar Dec 01 '25 04:12 chenBright

用的单节点,但是会循环尝试各个节点,进行初始化。

chigo-zhao avatar Dec 01 '25 08:12 chigo-zhao

单节点Channel,RPC只有一个节点选择。

chenBright avatar Dec 01 '25 11:12 chenBright