调整慢连接超时算法

This commit is contained in:
GoEdgeLab
2022-12-12 10:04:36 +08:00
parent 4336bdac85
commit a0cfaa9fa6

View File

@@ -115,7 +115,11 @@ func (this *ClientConn) Read(b []byte) (n int, err error) {
func (this *ClientConn) Write(b []byte) (n int, err error) { func (this *ClientConn) Write(b []byte) (n int, err error) {
// 设置超时时间 // 设置超时时间
_ = this.rawConn.SetWriteDeadline(time.Now().Add(60 * time.Second)) // TODO 时间可以设置 var timeoutSeconds = len(b) / 512
if timeoutSeconds < 5 {
timeoutSeconds = 5
}
_ = this.rawConn.SetWriteDeadline(time.Now().Add(time.Duration(timeoutSeconds) * time.Second)) // TODO 时间可以设置
n, err = this.rawConn.Write(b) n, err = this.rawConn.Write(b)
if n > 0 { if n > 0 {
@@ -130,6 +134,7 @@ func (this *ClientConn) Write(b []byte) (n int, err error) {
// 如果是写入超时,则立即关闭连接 // 如果是写入超时,则立即关闭连接
if err != nil && os.IsTimeout(err) { if err != nil && os.IsTimeout(err) {
// TODO 考虑对多次慢连接的IP做出惩罚
conn, ok := this.rawConn.(LingerConn) conn, ok := this.rawConn.(LingerConn)
if ok { if ok {
_ = conn.SetLinger(0) _ = conn.SetLinger(0)