【发布时间】:2016-07-24 16:48:10
【问题描述】:
只是从github 交叉发布。
我正在使用 xorm 0.4.3 和 go-mysql。我们正在使用 Golang 1.4。
我们在xorm 中指定了maxIdleConnetions 和maxOpenConnections 如下:-
var orm *xorm.Engine
...
orm.SetMaxOpenConns(50)
orm.SetMaxIdleConns(5)
我们使用同一个xorm 实例来查询Mysql。
但我们仍然在TCP Connection Establised 状态看到很多连接,这远远超过我在lsof 时在maxIdleConnetions 和maxOpenConnections 状态配置的数字:-
app 8747 10568 sandeshsharma 16u IPv4 691032 0t0 TCP 127.0.0.1:57337->127.0.0.1:mysql (ESTABLISHED)
我们还观察到,即使我们停止 MySQL,连接数仍然保持不变,但处于CLOSED_WAIT 状态。如果我们关闭应用程序,那么所有连接都会消失。
app 8747 10844 sandeshsharma 38u IPv4 505058 0t0 TCP 127.0.0.1:54160->127.0.0.1:mysql (CLOSE_WAIT)
然而,在 mysql 进程列表中,它显示了我在 maxIdleConnetions 和 maxOpenConnections 中指定的正确连接数。
有人可以解释一下这种行为吗?为什么即使我们将maxIdleConnetions 和maxOpenConnections 分别指定为 5 和 50,我们仍然观察到如此多的 TCP 连接?
【问题讨论】:
标签: go