brpc icon indicating copy to clipboard operation
brpc copied to clipboard

streaming模式,server发流,两个client收流,client报Connection reset by peer

Open lanjun-wang opened this issue 2 years ago • 3 comments

Describe the bug (描述bug) streaming模式下,server向client推流,message较大,每次StreamWrite 16M, 两个client同时发起echo调用,server同时向两个client推流,其中一个client会报错: I20230914 02:58:02.964776 24499 client.cpp:45] One message: size=16777216 I20230914 02:58:02.964805 24499 client.cpp:49] [144]Received from Stream=1: size = 16777216 I20230914 02:58:03.004117 24499 client.cpp:45] One message: size=16777216 I20230914 02:58:03.004145 24499 client.cpp:49] [145]Received from Stream=1: size = 16777216 W20230914 02:58:03.054648 24499 input_messenger.cpp:375] Fail to read from Socket{id=0 fd=3 addr=10.58.14.24:8001:41772} (0x563b04d4d1c0): Connection reset by peer [104] I20230914 02:58:03.055034 24495 client.cpp:58] Stream=1 is closed

server也会报错: I20230914 02:58:02.981964 31720 server.cpp:110] bthread=4294972162, send message to Stream=204, size=16777216 I20230914 02:58:03.007588 31725 server.cpp:110] bthread=4294978049, send message to Stream=408, size=16777216 I20230914 02:58:03.016865 31689 server.cpp:110] bthread=4294972162, send message to Stream=204, size=16777216 W20230914 02:58:03.054450 31714 input_messenger.cpp:375] Fail to read from Socket{id=306 fd=8 addr=10.58.14.28:41772:8001} (0x7fbe3c044dc0): Connection reset by peer [104] W20230914 02:58:03.054462 31709 socket.cpp:1772] Fail to keep-write into Socket{id=306 fd=8 addr=10.58.14.28:41772:8001} (0x7fbe3c044dc0): Broken pipe [32] I20230914 02:58:03.063979 31720 server.cpp:110] bthread=4294972162, send message to Stream=204, size=16777216 I20230914 02:58:03.088527 31703 server.cpp:110] bthread=4294972162, send message to Stream=204, size=16777216 I20230914 02:58:03.112658 31667 server.cpp:110] bthread=4294972162, send message to Stream=204, size=16777216 I20230914 02:58:03.138048 31714 server.cpp:110] bthread=4294972162, send message to Stream=204, size=16777216 W20230914 02:58:03.156893 31665 input_messenger.cpp:368] Socket{id=510 fd=9 addr=10.58.14.28:41848:8001} (0x7fbd60044dc0) was closed by remote side I20230914 02:58:03.159297 31713 server.cpp:110] bthread=4294972162, send message to Stream=204, size=16777216

To Reproduce (复现方法) 先启动server , 然后再同时启动两个client, 都是在容器中运行,server和client不在同一台机器,两个client在同一个机器不同的容器中

Expected behavior (期望行为) 两个client并发能像单个client一样,不出错。

Versions (各种版本) OS: ubuntu:18.04 docker运行 Compiler: cmake 3.22.6 bazel 4.2.2 brpc: 1.6.0 protobuf: v3.19.1

Additional context/screenshots (更多上下文/截图) 错误信息: server端: image client端: image

lanjun-wang avatar Sep 14 '23 03:09 lanjun-wang

服务端代码: image image g_msg = 16M 客户端: image 给stream绑定了一个receiver.

lanjun-wang avatar Sep 14 '23 03:09 lanjun-wang

@jamesge

lanjun-wang avatar Sep 14 '23 03:09 lanjun-wang

非必现,有时候也会不报错跑完。

lanjun-wang avatar Sep 14 '23 07:09 lanjun-wang