brpc icon indicating copy to clipboard operation
brpc copied to clipboard

brpc broken socket 无法恢复 ,client 与 server 端无法重建连接

Open legionxiong opened this issue 2 weeks ago • 5 comments

Describe the bug brpc socket broken 后一直没有被回收,client 与 server 端无法重建连接。与 #1168 问题类似。

Image

This is a broken Socket

version=1 shared_part={ ref_count=1 socket_pool=null creator_socket=170 in_size=1288977874 in_num_messages=4850513 out_size=20318875586 out_num_messages=4850841 recent_error_count=58527 } nref=3 nevent=1 fd=94 tos=0 reset_fd_to_now=61999138754us remote_side=172.20.10.3:8000 local_side=172.20.10.177:55204 on_et_events=0x7f1019133de0 user=(brpc::InputMessenger*)0x556efc440850 this_id=170 preferred_index=1 (baidu_std) hc_count=0 avg_input_msg_size=85 read_buf=0 last_read_to_now=59650542887us last_write_to_now=59646841539us overcrowded=0 id_wait_list={} parsing_context=0 pipeline_q=0 hc_interval_s=3 is_hc_related_ref_held=1 ninprocess=1 auth_flag_error=0 auth_id=2216203124737 auth_context=0 logoff_flag=0 last_error=104 _additional_ref_status=2 total_streams_buffer_size=0 ninflight_app_health_check=0 agent_socket_id=(none) cid=0 write_head=0 ssl_state=SSL_OFF is_write_shutdown=0 keepalive=0 tcp_keepalive_time=7200 tcp_keepalive_intvl=75 tcp_keepalive_probes=9 tcp_user_timeout=0 tcpi={ state=7 ca_state=0 retransmits=0 probes=0 backoff=0 options=7 snd_wscale=7 rcv_wscale=7 rto=202000 ato=40000 snd_mss=1448 rcv_mss=1448 unacked=0 sacked=0 lost=0 retrans=0 fackets=0 last_data_sent=59646841 last_ack_sent=0 last_data_recv=59650543 last_ack_recv=59646841 pmtu=1500 rcv_ssthresh=3145728 rtt=1157 rttvar=2223 snd_ssthresh=640 snd_cwnd=17 advmss=1448 reordering=3 } bthread_tag=0

To Reproduce 这个问题在我们的使用场景中只有一个 client 出现了, 原因是 server 挂了十几分钟后又恢复了, 而这个 client 在 10 小时后都无法与 server 通信。 客户端都默认开启了 HealthCheck,但是没有开 keepalive。

Expected behavior broken socket 被回收掉,client 恢复与 server 通信。

Versions OS: Rocky 8.4 Compiler: brpc: 1.13.0 protobuf:

Additional context/screenshots

legionxiong avatar Dec 12 '25 02:12 legionxiong