Skip to content

Commit

Permalink
proxy: set keepalive for backend connections (pingcap#227)
Browse files Browse the repository at this point in the history
  • Loading branch information
xhebox committed Mar 13, 2023
1 parent 6e2e764 commit 6296a67
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions pkg/proxy/backend/backend_conn_mgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ func (mgr *BackendConnManager) getBackendIO(cctx ConnContext, auth *Authenticato
}

var cn net.Conn
cn, err = net.DialTimeout("tcp", addr, DialTimeout)
cn, err = mgr.dialNewBackend(addr)
if err != nil {
return nil, errors.Wrapf(err, "dial backend %s error", addr)
}
Expand Down Expand Up @@ -424,7 +424,7 @@ func (mgr *BackendConnManager) tryRedirect(ctx context.Context) {
}

var cn net.Conn
cn, rs.err = net.DialTimeout("tcp", rs.to, DialTimeout)
cn, rs.err = mgr.dialNewBackend(rs.to)
if rs.err != nil {
mgr.handshakeHandler.OnHandshake(mgr, rs.to, rs.err)
return
Expand Down Expand Up @@ -638,3 +638,19 @@ func (mgr *BackendConnManager) Close() error {
mgr.closeStatus.Store(statusClosed)
return errors.Collect(ErrCloseConnMgr, connErr, handErr)
}

func (mgr *BackendConnManager) dialNewBackend(addr string) (net.Conn, error) {
cn, err := net.DialTimeout("tcp", addr, DialTimeout)
if err != nil {
return cn, err
}
if tcpcn, ok := cn.(*net.TCPConn); ok {
if err := tcpcn.SetKeepAlive(true); err != nil {
mgr.logger.Warn("fail to set keepalive for backend", zap.Error(err))
}
if err := tcpcn.SetKeepAlivePeriod(15 * time.Second); err != nil {
mgr.logger.Warn("fail to set keepalive period for backend", zap.Error(err))
}
}
return cn, err
}

0 comments on commit 6296a67

Please sign in to comment.