Skip to content

client connection has been closed by peer #363

Closed

Description

@lkxiaolou

Describe the bug
仅使用 netpoll client 进行建连,当 server 设置 ReadTimeout 比较小时,例如这样:

// server
func main() {
	s := http.Server{
		ReadTimeout: time.Millisecond,
	}

	ln, err := net.Listen("tcp", ":8000")
	if err != nil {
		panic(err)
	}
	s.Serve(ln)
}

// client
dialer := netpoll.NewDialer()
conn, err := dialer.DialTimeout("tcp", "127.0.0.1:8000", 2*time.Second)

client 压力大,调度慢时出现 client connection has been closed by peer 报错,原生 net 则不会

Activity

  1. huzhao37 commented on Oct 10, 2024

    @huzhao37
  2. joway commented on Oct 11, 2024

    @joway
    Contributor

    @lkxiaolou “原生 net 则不会” 是没有这个报错还是其他报错?从你的代码看,server 在 1 ms 内没有收到请求就要关闭连接,所以netpoll 报这个错误是符合预期的?
    image

  3. joway commented on Oct 11, 2024

    @joway
    Contributor

    一般你作为 server,这个值就不应该设置成 1ms 这么小

  4. lkxiaolou commented on Oct 12, 2024

    @lkxiaolou
    Author

    一般你作为 server,这个值就不应该设置成 1ms 这么小

    后续读写报错符合预期,但建立连接不应该报错

  5. joway commented on Oct 24, 2024

    @joway
    Contributor

    @lkxiaolou #364 可以试试看这个分支是否还有你的这个问题吗?

  6. lkxiaolou commented on Feb 11, 2025

    @lkxiaolou
    Author

    @lkxiaolou #364 可以试试看这个分支是否还有你的这个问题吗?

    @joway 只是改了报错信息吗?我理解建立连接不该报错,和原生保持一致

  7. joway commented on Feb 13, 2025

    @joway
    Contributor

    @lkxiaolou

    我理解建立连接不该报错,和原生保持一致

    没有这个承诺,而且事实就是建立连接的时候超时了,为什么一定要读的时候报错。修改是让错误信息更加合理

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions