我们的服务器运行几周后,收到以下 Coldfusion 错误消息:
执行数据库查询时出错。无法创建与数据库服务器的连接。尝试重新连接 3 次
我们在一台使用了一年之久的 XServer 上运行 Coldfusion Enterprise 9,该服务器使用 Snow Leopard 和 MySQL 5,在 Coldfusion 管理员中设置了大约十个 DSN,全部为本地,采用默认高级设置,主机设置为“localhost”,服务器的负载并不重。
奇怪的是,服务器重启后,一切都正常。然后大约一周后,一些数据库将停止工作,也就是说 Coldfusion 无法与它们建立连接。如果我转到 Coldfusion 管理员并单击“验证所有数据源”,我会发现只有 2 或 3 个数据源得到验证,其他数据源都失败了,并且当服务器开始出现这种情况时,如果我再次尝试验证,总是无法验证相同的数据源,但不一定是上次服务器出现这种情况时无法验证的相同数据源。
我知道“max_connections”设置,并且我们在 MySQL 配置文件中为该设置包含了一行并将其设置为 2000,当我们通过查询读取它时,它显示“2000”,所以这不是问题。
mysql_service.log 中没有有用的信息 我们还尝试刷新主机,正如我在一个论坛中读到的那样,以检查 MySQL 服务器是否已“禁止”我们的用户,但没有结果。
任何人?
答案1
如果你在 mysql 服务器上输入“netstat -an | grep 3306”,你是否会看到许多打开的套接字(“ESTABLISHED”),如果这个数字超过了 mysql 配置允许打开的套接字数量,那么就有一些东西锁定并持有所有的数据库池句柄。
这可能是 mysql 中的问题,但更可能是应用程序问题,没有将句柄释放回池,类似于内存泄漏。
如果没有更多的信息就很难诊断问题,但这就是我的起点。