```go
port := 20000
LocalAddress := "192.168.1.148"
for port<30000 {
log.Println("Starting:",port)
localAddr,_ := net.ResolveTCPAddr("tcp",LocalAddress+":"+strconv.Itoa(port))
dialer := &net.Dialer{LocalAddr: localAddr}
log.Println("Starting dial ...")
//卡在这里
conn,err := tls.DialWithDialer(dialer,"tcp","rhel:8000",tlsConfig)
log.Println("End dial ...")
if err!=nil {
log.Panicln(err)
}
go handleConn(conn)
port++
}
```
发起大约五千个连接之后,就开始卡住,之后每次DialWithDialer都要花费7min
不知道什么原因
我觉得不应该是IO处理能力有限的问题,内存和cpu都没有出现负载,我不加tls,并发直接上到160k;加了mTLS之后,每次都是大概5000多并发后突然卡住,然后每7min才能建立一个conn
#4
更多评论
第一反应是 ulimit的问题
第二反应是请求端没有端口复用,快速建立和关闭tcp连接时,由于tcp是无法直接关闭的,往往实际是需要等超时才会被关闭。
#2