php,mysql - 与数据库错误的连接太多

zoz*_*ozo 15 php mysql pdo database-connection zend-framework

大家好日子.我有一个奇怪的错误.我创建了一个像这样的聊天:

  • 问题/答案被插入到数据库中
  • 每2秒将一个ajax请求发送到一个获取新问题/答案的php脚本

它工作正常,直到今天我收到此错误:

Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1040] Too many connections' in /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php:129 
Stack trace: #0 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php(129): PDO->__construct('mysql:host=loca...', '', '', Array) 
s#1 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect() 
s#2 /var/www/html/dbdev/include/Zend/Db/Adapter/Abstract.php(448): Zend_Db_Adapter_Pdo_Mysql->_connect() 
s#3 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('select profile_...', Array) 
s#4 /var/www/html/dbdev/include/Zend/Db/Adapter/Abstract.php(782): Zend_Db_Adapter_Pdo_Abstract->query('select profile_...', Array) 
s#5 /var/www/html/dbdev/include/Profile.php(43): Zend_Db_Adapter_Abstract->fetchPairs('select profile_...') 
s#6 /var/www/html/dbdev/public_html/index.php(29): Profile->load() 
s#7 {main} Next exception 'Zend_Db_Adapter_Exception' with in /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php on line 144
Run Code Online (Sandbox Code Playgroud)

问题是我们不是那么多......(8)我并不认为数据库不能同时支持超过8到16个连接(在规范上写的聊天必须支持50-100个用户,所以8是......小)

那么......可以告诉我为什么会这样(昨天我们15岁并且工作正常)以及如何解决它?谢谢您的帮助.如果您需要任何代码示例,请询问.

Ale*_*scu 35

"Too Many Connections"错误有很多不同的原因.

查看MySQL.com上的这个FAQ页面:http: //dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

检查my.cnf文件中的"max_connections".如果不存在,请尝试:

[mysqld]
set-variable=max_connections=250
Run Code Online (Sandbox Code Playgroud)

但是默认值是151,所以你应该没问题.

如果您在共享主机上,则可能是其他用户占用了太多连接.

需要注意的其他问题是使用持久连接和耗尽磁盘空间.


Nan*_*nne 15

该错误SQLSTATE[HY000] [1040] Too many connections是SQL错误,与sql server有关.可能有其他应用程序连接到服务器.服务器具有最大可用连接数.

如果你有phpmyadmin,你可以使用'变量'选项卡来检查设置是什么.

您还可以像这样查询状态表:

show status like '%onn%';
Run Code Online (Sandbox Code Playgroud)

或者有些不一致.检查手册中有哪些变量

(请注意,'连接'不是当前连接,检查链接:))


Zim*_*bao 6

如果达到Mac连接限制,请转到/etc/my.cnf并在[mysqld]添加部分 下max_connections = 500

然后重启MySQL。


小智 6

如果您需要在不重新启动 MySQL 的情况下增加 MySQL 连接,请执行以下操作,如果您不知道配置文件,请使用 mysqlworkbench 或 phpmyadmin 或命令提示符运行以下查询。

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> SET GLOBAL max_connections = 250;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 250   |
+-----------------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

这些设置将在 MySQL 重新启动时更改。


对于永久更改,请在 my.cnf 中添加以下行并重新启动 MySQL。

max_connections = 151
Run Code Online (Sandbox Code Playgroud)