如何以编程方式在MySQL中设置max_connections

时间:2013-11-06 20:51:01

标签: mysql database

我有一个服务器,许多用户将连接到它并在那里使用数据库,我正在使用MySQL。我知道MySQL中max_connections的默认数量是100或150,但我确定我需要超出该数字,因此我使用以下内容来增加数字:

SET global max_connections = 1000000

现在我尝试按如下方式检查max_connections

show variables like 'max_connections'

它给了我以下内容:

max_connections; 100000;

这是一个成功的标志(除非我理解错了)。当我的用户开始连接时,当连接的用户数超过110时,我从服务器收到错误。错误是:

  

错误连接:超时已过期。超时时间过去了   从池中获取连接。这可能已经发生过   因为所有池化连接都在使用中,并且最大池大小为   达到。

为什么我会收到此错误,以及如何解决此问题?

2 个答案:

答案 0 :(得分:48)

如何更改max_connections

当MySQL通过max_connections运行时,您可以更改SET

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)

至OP

timeout相关

之前我从未见过您的错误消息,所以我用Google搜索。可能,你正在使用连接器/网络。 Connector/Net Manual表示存在最大连接池大小。 (默认值为100)见表22.21。

我建议您将此值增加到100k或禁用连接池Pooling=false

已更新

他有两个问题。

Q1 - 如果我禁用合并会发生什么 减速进行数据库连接。 connection pooling是一种使用已经建立的数据库连接的机制。建立新连接的成本很高。 http://en.wikipedia.org/wiki/Connection_pool

Q2 - 合并的价值可以增加还是最高为100?

你可以增加,但我确定什么是MAX值,可能是my.cnf中的max_connections

我的建议是,不要关闭Pooling,将值增加100,直到没有连接错误。

如果你有像JMeter这样的压力测试工具,你可以自己测试一下。

答案 1 :(得分:1)

您可以使用设置最大连接数:

设置global max_connections = '1 < your number > 100000';

这将设置您的mysql连接数