Doris be 日志大量警告:/brpc/src/brpc/socket.cpp:1196] Fail to wait EPOLLOUT of fd=187: Connection timed out
背景
测试环境:1台 fe(2核8G) + 3 台be(2核8G),采用 stream load 方式导入数据,运行一段时间后,大量出现 Fail to wait EPOLLOUT of fd=187: Connection timed out [110] 的日志。
日志如下:
W0102 04:50:16.640652 4216 socket.cpp:1194] Fail to wait EPOLLOUT of fd=365: Connection timed out [110]
W0102 04:50:17.641734 4216 socket.cpp:1194] Fail to wait EPOLLOUT of fd=365: Connection timed out [110]
W0102 04:50:18.141074 4216 socket.cpp:1194] Fail to wait EPOLLOUT of fd=452: Connection timed out [110]
W0102 04:50:20.141149 4216 socket.cpp:1194] Fail to wait EPOLLOUT of fd=313: Connection timed out [110]
W0102 04:50:21.142115 4212 socket.cpp:1194] Fail to wait EPOLLOUT of fd=326: Connection timed out [110]
Doris 状态
导入数据量也不大,每次最多导入1000条数据,内存磁盘都正常,be大概还剩 1.5G 左右内存,磁盘 50G 的基本没消耗。
如何解决
暂时没找到原因,目前看并没有导致 be 挂掉。
网上找解决办法也没有找到,只有一个未解决的 issue。
1.对端启动了吗?
2.能提供下最小复现的代码吗,可能不是对端没有启动的原因
3.场景就是:client --- server --- backupend
如果client侧的timeout_ms比server到backupend的timeout_ms小的时候。
client超时,断开连接,server感知不到,导致链接处于CLOSE_WAIT,当超过了系统连接限制就进入假死状态。
4.--usercode_in_pthread=true
去掉这个,CLOSE_WAIT很快就释放了,如果存在这个配置,CLOSE_WAIT会一直存在。
6.如果client遇到超时关闭连接,但是server端还卡在和backupend通信中,并未结束请求,这时候CLOSE_WAIT是符合预期的
知道问题原因或者解决办法的小伙伴请 留言 告诉我们,谢谢!