我们在 FreeBSD 7.2-RELEASE 上运行 MySQL 5.1.33。
这是一个开发数据库服务器,连接到运行银条和 PHP 5.3。
今天早上,开发网络服务器抱怨无法连接到数据库服务器。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 中,我如何知道哪些文件被保存了?也许打开的文件只是个幌子。
答案1
事实证明,该问题是由本地主机防火墙故障引起的。mysql 客户端最初能够连接(或建立一些连接),但后续数据包被忽略。
我仍在尝试弄清楚有关打开文件的问题,但该问题已经消失。