go-TCP连接池

1.为什么需要连接池?
减少连接的创建和关闭,增加系统负载能力
2.长时间空闲,连接断开?
网络环境的复杂性,防火墙等原因,导致长时间空闲的连接会断开,有两个解决方案:
1)客户端增加心跳,定时向服务端发起请求
2)连接池中的连接增加最大空闲时间,超时连接不再使用
3.当服务端重启之后,连接失效?
远程服务端很有可能重启,那么之前创建的链接就失效了。客户端在使用的时候就需要判断这些失效的连接并丢弃,在`database/sql`中就判断了这些失效的连接,使用这种错误表示`var ErrBadConn = errors.New("driver: bad connection")`

-  对连接进行read读操作时,返回`EOF`错误
-   对连接进行write操作时,返回`write tcp 127.0.0.1:52089->127.0.0.1:8002: write: broken pipe`错误

db.SetMaxIdleConns(10) //连接池中最大空闲连接数
db.SetMaxOpenConns(20) //打开的最大连接数
db.SetConnMaxLifetime(300*time.Second)//连接的最大空闲时间(可选)

如果MaxIdleConns大于0并且MaxOpenConns小于MaxIdleConns

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!