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

ant*_*ntf 32 mysql database

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

SET global max_connections = 1000000
Run Code Online (Sandbox Code Playgroud)

现在我尝试检查max_connections如下:

show variables like 'max_connections'
Run Code Online (Sandbox Code Playgroud)

它给了我以下内容:

max_connections; 100000;
Run Code Online (Sandbox Code Playgroud)

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

错误连接:超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.

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

Jas*_*Heo 51

如何改变 max_connections

您可以max_connections在MySQL运行时进行更改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)
Run Code Online (Sandbox Code Playgroud)

到OP

timeout 有关

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

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

更新

他有两个问题.

Q1 - 如果我禁用池化会 慢下来建立数据库连接会发生什么.connection pooling是一种使用已经建立的数据库连接的机制.建立新连接的成本很高.http://en.wikipedia.org/wiki/Connection_pool

Q2 - 汇集的价值可以增加还是最大值是100?

你可以增加,但我确定什么是MAX值,也许max_connections在my.cnf

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

如果你有压力测试工具,JMeter你可以测试自己.