php - Zend Framework 应用程序未正确关闭 mysql 连接

标签 php mysql zend-framework

我在使用 Zend_Db 的 PDO 适配器管理我的数据库连接时遇到了一个奇怪的问题。突然间,我的 MySQL 服务器不断达到连接限制。

无论出于何种原因,每隔三四个小时左右我就会收到此错误,并且 Apache 在每个 HTTP 请求上都会出现此错误:

PHP Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'SQLSTATE[00000] [1129] Host 'my.internal.mysql.server.DNS.here' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'' in

奇怪的是,我没有更改任何代码,而且流量实际上比过去有所下降,所以我知道我的应用不应该产生更多并发连接。最奇怪的是我已经将近一周没有更改任何主要应用程序文件的代码,从那以后一切都运行得很顺利。

重新启动 mysql 服务或使用 mysqladmin flush-hosts 刷新连接确实可以解决问题,我确信增加 my.cnf 中的最大并发连接数也有助于缓解其中的一些问题,但似乎有一个应用程序本身的核心问题是创建了过多的连接。

关于如何向下钻取和关联导致挂起连接的代码段有什么想法吗?在外部,Web 应用程序的所有不同页面加载速度都很好。

最佳答案

我认为您的某个脚本正在运行超长查询或卡住了?

最好的解决方案是创建一个日志记录工具并使用它来了解问题的确切位置。

Zend_Log类应该可以帮助您编写该日志记录工具,显然您最好使用文件编写器而不是数据库编写器。由于您的问题与数据库相关,您应该创建或修改数据库类以发出一些日志。

我不知道您项目的容量,但它可能会产生一些性能副作用

也在玩long query MySQL 的特性可能会给你一些提示。

希望您能找到您的问题所在。

关于php - Zend Framework 应用程序未正确关闭 mysql 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664713/

相关文章:

php - 如何在 PHP 中实现 __isset() 魔术方法?

php - 在 MySQL 中管理删除时的唯一 ID

mysql - 为什么使用 GROUP BY 的 SQL 查询会产生更多的行?

php - zend框架1中的“Invalid controller specified”错误

php - 有没有一种方法可以检查所有数组项是否都是 '0' ?

php - laravel 事件,它们是同步执行的吗?

php - 我如何使用 MySql ENUM 类型? (它适合新闻提要吗)

php - 在mysql中获取相似行数

php - 如何更改数据库的架构以引入新功能或更改当前功能

php - 如何阻止 Zend Framework 将 '/scripts/' 附加到 View 基本路径