MySQL:没有太多的活动,但成千上万的networking连接保留在TIME_WAIT“

我们在FreeBSD 7.2-RELEASE上运行MySQL 5.1.33。

这是一个连接到运行Silverstripe和PHP 5.3的开发Web服务器的开发数据库服务器。

今天早上,开发Web服务器抱怨说无法连接到数据库服务器。 PHP错误是“无法连接到'host.example.gov'上的MySQL服务器”。

我们发现数据库服务器上有成千上万个打开的文件,考虑到这个服务器大部分是空闲的,这也是不常见的。

# lsof |grep /var/db/mysql/DATABASE |wc -l 5135 

在TIME_WAIT状态下也有数千个连接,这是不寻常的。 我期待这些TIME_WAIT连接超时,但在最后20分钟内还没有结束。

 # netstat -an | grep 3306 | grep -c TIME_WAIT 2650 

在数据库服务器上似乎没有太多活动发生:

 # mysql -e "show full processlist;" +------+------+-----------+------+---------+------+-------+-----------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+------+-----------+------+---------+------+-------+-----------------------+ | 2489 | root | localhost | NULL | Query | 0 | NULL | show full processlist | +------+------+-----------+------+---------+------+-------+-----------------------+ 

我的问题:从MySQL内部,我怎么能告诉什么是这些文件? 也许打开的文件是一个红鲱鱼。

事实certificate,这个问题是由一个错误的本地主机防火墙引起的。 mysql客户端能够最初连接(或build立连接),但后来的数据包被忽略。

我仍然试图弄清楚这些开放文件,但是这个问题已经消失了。