php – MySQL中“许多连续中断的连接请求”是什么?

前端之家收集整理的这篇文章主要介绍了php – MySQL中“许多连续中断的连接请求”是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我经常有以下错误

PHP致命错误:带有消息’sqlSTATE [HY000]的未捕获异常’PDOException'[1129]由于许多连接错误,主机’MY SERVER’被阻止;使用’MysqLadmin flush-hosts’取消阻止

使用常规(如crontab)MysqLadmin flush-hosts命令或增加max_connect_errors系统变量很容易解决问题,如here所示.

但是!什么是“许多连续中断的连接请求”,为什么会发生这种情况?

我宁愿防止上游问题,而不是纠正阻塞.

MysqL版本:5.5.12.我正在使用Zend Framework 1.11.10和Doctrine 2.1.6.

我的PHP代码中没有MysqL_close()和MysqLi_close().

max_connect_errors有默认值10,我不想增加它,我想知道为什么我有错误.我使用一个cron,每隔5分钟执行一次MysqLadmin flush-hosts命令.

此响应是设计为安全措施,是达到MysqL的max_connection_errors值的结果. Here’s a link Oracle提供了大部分可能原因和解决方案的详细信息.

最终,这意味着有很多连续的连接失败,MysqL停止响应连接尝试.

I use a cron,every 5 minutes which does a MysqLadmin flush-hosts
command.

当你如此迅速地达到这个限制时,只有少数可能的罪魁祸首:

>服务器未正确配置为使用PDO.
>运行代码包括非常频繁地创建新连接.

>导致快速达到max_connections值,导致所有后续连接尝试失败…从而快速达到max_connection_errors限制.

>代码遇到无限循环或级联失败.

>明显的可能性,但必须提到.
>(即:pageA调用pageB和pageC,pageC调用PageA)

> PDO运行正常,但有些脚本需要很长时间才能运行,或者永远不会结束.

>最简单的方法关闭max_execution_time.

无论如何,这很可能难以追查.

>记录每个MysqL连接尝试的堆栈跟踪,以查找导致此问题的代码.
>检查MysqL.err日志文件

虽然PDO不需要显式关闭MysqL连接,但对于这种情况,有一些实践可以阻止这样的ServerAdmin搜索.

>始终显式关闭MysqL连接.

>构建一个simple Class来处理所有连接.打开,返回数组,关闭.
>唯一需要保持连接打开的时间是游标.

>始终在一个且仅在一个所需位置包含的文件中定义连接参数.
>永远不要增加max_execution_time,除非您知道需要它,并且您知道服务器可以处理它.如果需要,只显示需要它的脚本的值. PHP.net/manual/en/function.set-time-limit.PHP

>如果增加max_execution_time,请增加max_connections.

dev.MysqL.com/doc/refman/5.0/en/cursors.html

猜你在找的PHP相关文章