kitex icon indicating copy to clipboard operation
kitex copied to clipboard

NETPOLL: readall(fd=xxx) before close: EOF

Open zhangzhao219 opened this issue 2 years ago • 8 comments

Describe the bug

QPS2000左右的测试环境下,Kitex服务端偶尔会出现这个报错,大概一天不超过10次。

To Reproduce

偶尔可发现这个报错,手动无法复现

server端配置:

server.WithServiceAddr(
	&net.TCPAddr{
		IP:   127.0.0.1,
		Port: xxxx,
	},
),
server.WithServerBasicInfo(
	&rpcinfo.EndpointBasicInfo{
		ServiceName: xxxxx,
	},
),

client配置:(长连接)

client.WithResolver(
	resolver.NewNacosResolver(
		cli,
	),
),
client.WithTransportProtocol(transport.TTHeader),
client.WithMetaHandler(transmeta.ClientTTHeaderHandler),
client.WithLongConnection(
	connpool.IdleConfig{
		MaxIdlePerAddress: 50,
		MaxIdleGlobal:     500,
		MaxIdleTimeout:    2 * time.Minute,
		MinIdlePerAddress: 2,
	},
),

仅上线服务端后即有这个错误,也就是在没有client请求的情况下就会出现这个日志

Screenshots

2023/05/24 00:41:28 NETPOLL: readall(fd=182) before close: EOF 2023/05/24 00:08:59 NETPOLL: readall(fd=112) before close: EOF 2023/05/23 22:10:07 NETPOLL: readall(fd=205) before close: EOF 2023/05/23 20:10:06 NETPOLL: readall(fd=135) before close: EOF 2023/05/23 17:38:03 NETPOLL: readall(fd=140) before close: EOF 2023/05/23 17:10:07 NETPOLL: readall(fd=245) before close: EOF 2023/05/23 10:28:53 NETPOLL: readall(fd=201) before close: EOF

Kitex version:

v0.6.0

Environment:

golang:v1.18-alpine

zhangzhao219 avatar Jul 03 '23 07:07 zhangzhao219

这个报错实际上是在对端关闭连接时,读取未读完的缓冲区数据到input buffer,避免send&close的情况下,无法处理请求。 如果是没有客户端请求的时候就有这个报错,可以看下对应连接是由哪个来源方建立的,一般是这个来源方发送的数据包同时关闭连接导致这个错误。

jayantxie avatar Jul 10 '23 02:07 jayantxie

感谢您的解答! 这个错误的NETPOLL库的源码大概看了一下,我明白你的意思。 可是在没有客户端的请求的情况下为什么会发送数据包呢? 还有一种情况是当请求大量超时的时候,例如在1点的时候有七百个请求超时,然后在1点10会报大概三百个这样的错误,正好和服务端的默认配置(WithMaxConnIdleTime)10分钟吻合? 错误理解,只是不理解为什么会有这个错误,以及应该怎么修改才能避免这个错误,或者说这个错误实际上影响也不大?

zhangzhao219 avatar Jul 10 '23 04:07 zhangzhao219

最好还是抓包看看,主要是看对应连接是跟哪个来源方建立的,从上面的表述看,没有发现明确的可疑点。

jayantxie avatar Jul 10 '23 05:07 jayantxie

我们也遇到这个问题。。。

b675987273 avatar Jul 10 '23 13:07 b675987273

是不是需要加个lianjie1池监控

b675987273 avatar Jul 10 '23 13:07 b675987273

之前有遇到这个问题吗?或者你们提供一个最小可复现的代码?

jayantxie avatar Jul 11 '23 10:07 jayantxie

看起来是网络问题,使用耗时长的http连接也会复现

b675987273 avatar Jul 22 '23 03:07 b675987273

这个日志本身也没必要打的,不算是错误

jayantxie avatar Jul 24 '23 03:07 jayantxie

如果还遇到类似的问题,请在 Netpoll 仓库提交 issue

GuangmingLuo avatar Dec 09 '24 11:12 GuangmingLuo