我有一台服务器,很多用户都会连接到它并使用那里的数据库,而我使用的是MySQL。我知道MySQL中max_connections
的默认数量是100或150,但我确定我需要的数量远远超过这个数字,因此我使用以下方法来增加该数量:
SET global max_connections = 1000000
现在我尝试检查max_connections
,如下所示:
show variables like 'max_connections'
它为我提供了以下内容:
max_connections; 100000;
这是它成功的标志(除非我理解错了)。当我的用户开始连接时,当连接的用户数超过110时,我会收到来自服务器的错误。错误是:
连接
时出错:超时已过期。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中,并且已达到最大池大小。
为什么我会得到这个错误,以及如何修复它?
发布于 2013-11-15 08:41:40
如何更改max_connections
您可以在MySQL通过SET
运行时更改max_connections
mysql> SET GLOBAL max_connections = 5000;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE "max_connections";
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 5000 |
+-----------------+-------+
1 row in set (0.00 sec)
要执行操作
与timeout
相关
我以前从未见过你的错误信息,所以我用谷歌搜索了一下。您可能正在使用Connector/Net。说有最大的连接池大小。(默认值为100)参见表22.21。
我建议您将此值增加到100k或禁用连接池Pooling=false
已更新
他有两个问题。
Q1 -如果我禁用池化减慢建立数据库连接,会发生什么情况?connection pooling
是一种使用已建立数据库连接的机制。建立新连接的成本很高。http://en.wikipedia.org/wiki/Connection_pool
Q2 -池化的值是否可以增加,或者最大值为100?
您可以增加,但我确定最大值是多少,可能是my.cnf中的max_connections
我的建议是,不要关闭池化,将值增加100,直到没有连接错误。
如果你有像JMeter
这样的压力测试工具,你可以自己测试一下。
发布于 2018-07-13 17:11:59
您可以使用以下命令设置最大连接数:
set global max_connections = '1 < your number > 100000';
这将设置您的mysql连接单元数(需要SUPER
权限)。
https://stackoverflow.com/questions/19822558
复制相似问题