当前位置: 首页 > news >正文

网站建设类的手机软件百度推广关键词越多越好吗

网站建设类的手机软件,百度推广关键词越多越好吗,做网站常用的语言,广州公众号代运营公司目录测试1go 1.15.15go 1.17.12测试2go 1.15.15go 1.17.12参考在使用golang 连接 mysql时,为了节省连接资源,在连接使用过后,希望在指定长度时间不再使用后,自动关闭连接。 这时,经常会使用SetConnMaxLifetime()&#…

目录

  • 测试1
    • go 1.15.15
    • go 1.17.12
  • 测试2
    • go 1.15.15
    • go 1.17.12
  • 参考

在使用golang 连接 mysql时,为了节省连接资源,在连接使用过后,希望在指定长度时间不再使用后,自动关闭连接。
这时,经常会使用SetConnMaxLifetime(),设置最大连接有效时间,
使用SetConnMaxIdleTime(),设置最大空闲连接时间 max idle time。

这两个函数的作用听起来差不多,理论上,都能达到相同效果。
但是在实际使用中,却有些出人意料。

首先看下测试代码,在以下代码中,
设置 max idle time 为传入的参数值,
设置 max life time 为传入的参数值,
设置 max open conn 为1,
设置 max idle conn 为1

package mainimport ("database/sql""log""fmt""os""strconv""time"_ "github.com/go-sql-driver/mysql"
)var dataBase = "root:xxxx@tcp(127.0.0.1:3306)/mysql?timeout=2s&readTimeout=6s&interpolateParams=true"func getVar(name string) int {val := os.Getenv(name)if len(val) == 0 {panic(fmt.Sprintf("error getting: %v", name))}v, err := strconv.Atoi(val)if err != nil {panic(fmt.Sprintf("error parsing %v %v", name, err))}return v
}func main() {db, err :=sql.Open("mysql", dataBase)  // connect to the db of your choice.if err != nil {panic(err)}defer db.Close()db.SetConnMaxIdleTime(time.Second * time.Duration(getVar("MAXIDLE")))db.SetConnMaxLifetime(time.Second * time.Duration(getVar("MAXLIFE")))db.SetMaxIdleConns(1)db.SetMaxOpenConns(1)sleep := time.Second*time.Duration(getVar("SLEEP"))for i := 0; i < 10; i++ {err = db.Ping()if err != nil {log.Fatalln("ping db fail:", err)}time.Sleep(sleep)print("\r", i)}fmt.Printf("\n%+v\n", db.Stats())
}

测试1

MAXIDLE=1 MAXLIFE=0 SLEEP=5 go run .

设置 max idle time 为1s,设置max life time为0s,也就是永不过期,相当于不设置life time。
每次连接之后,sleep 5s。

预期结果,循环10次,每次都会打开一个新的连接,旧的连接由于idle time到期而自动关闭。

go 1.15.15

output

9
{MaxOpenConnections:1 OpenConnections:1 InUse:0 Idle:1 WaitCount:0 WaitDuration:0s MaxIdleClosed:0 MaxIdleTimeClosed:0 MaxLifetimeClosed:0}

实际结果,只新建了一个连接,一直在使用,没有关闭连接。
也就是说设置max idle time 并没有生效。

go 1.17.12

9
{MaxOpenConnections:1 OpenConnections:0 InUse:0 Idle:0 WaitCount:0 WaitDuration:0s MaxIdleClosed:0 MaxIdleTimeClosed:10 MaxLifetimeClosed:0}

实际结果与预期相符。

测试2

MAXIDLE=1 MAXLIFE=2 SLEEP=5 go run .

设置 max idle time 为1s,设置max life time为2s,也就是idle time先到期
每次连接之后,sleep 5s。

预期结果,循环10次,每次都会打开一个新的连接,旧的连接是由于idle time到期自动关闭。

go 1.15.15

output

9
{MaxOpenConnections:1 OpenConnections:0 InUse:0 Idle:0 WaitCount:0 WaitDuration:0s MaxIdleClosed:0 MaxIdleTimeClosed:10 MaxLifetimeClosed:0}

实际结果与预期相符。

go 1.17.12

output

9
{MaxOpenConnections:1 OpenConnections:0 InUse:0 Idle:0 WaitCount:0 WaitDuration:0s MaxIdleClosed:0 MaxIdleTimeClosed:10 MaxLifetimeClosed:0}

实际结果与预期相符。

总结下,汇总以上测试结果如下表所示:

go版本是否 max idle time是否max life time空闲连接回收是否生效
go 1.15.15YNN
go 1.15.15YYY
go 1.17.12YNY
go 1.17.12YYY

在 go 1.15.15版本 或者其他相近版本中,只设置max idle time,不能自动回收空闲连接。

具体原因,可以参见 issue,或者具体查看go 源码,这应该是一个bug。

参考

database/sql: SetConnMaxIdleTime without SetConnMaxLifetime has no effect #41114

golang mysql 如何设置最大连接数和最大空闲连接数

http://www.ritt.cn/news/14353.html

相关文章:

  • 上海网站建设 数字展厅湖南竞价优化专业公司
  • 做编程网站有哪些内容河北seo诊断培训
  • 阿里云网站空间申请谷歌浏览器下载手机版中文
  • 网站飘动优化的定义
  • 深圳网站建设企业名录昆明长尾词seo怎么优化
  • 建设系统百度优化是什么意思
  • 免费360地图手机版谷歌seo博客
  • 网站开发相关外文书籍武汉seo优化分析
  • ios应用程序开发seo外链怎么发
  • 网站的前端和后端湖南seo优化
  • 怎么塔建网站seo
  • 个人网站 名字国内销售平台有哪些
  • 备案时网站关闭seo培训优化
  • 大型网站开发用什么样式免费建站工具
  • 国际建设管理学会网站做一个企业网站需要多少钱
  • 网站衣服模特怎么做找培训机构的网站
  • asp政府网站源码嘉兴seo
  • 网站开发项目需求文档公司网站制作
  • 如何用ip做网站东莞关键词自动排名
  • 网站建设的简要任务执行书域名注册哪个平台比较好
  • 做电商怎么建网站自己的网站
  • 成都html5网站建设上海十大营销策划公司排名
  • 产品包装设计公司网站营销推广方案ppt案例
  • 武汉高端网站定制设计师做电商必备的几个软件
  • 自己怎么注册网站百度网盘登陆
  • 滨海专业做网站google关键词优化排名
  • 网站建设6000元淘宝一个关键词要刷多久
  • 做餐厅logo用什么软件网站免费网站建设模板
  • 购物网站 服务器 带宽 多大国家卫健委每日疫情报告
  • 6东莞做网站企业营销策划书