43

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

SET global max_connections = 1000000

现在我尝试检查max_connections如下:

show variables like 'max_connections'

它给了我以下信息:

max_connections; 100000;

这表明它成功了(除非我理解错了)。当我的用户开始连接时,当连接的用户数超过 110 时,我收到来自服务器的错误。错误是:

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

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

4

3 回答 3

69

如何改变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)

到 OP

timeout有关的

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

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

更新

他有两个问题。

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

Q2 - pooling 的值是否可以增加或最大值为 100?

你可以增加,但我确定 MAX 值是多少,可能max_connections在 my.cnf

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

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

于 2013-11-15T00:41:39.687 回答
1

对于 Windows,

  1. 转到 c:\xampp\mysql\bin\my.init
  2. 添加max_connections = <your value> 示例 max_connections = 5000

对于乌布努图:

  1. sudo /opt/lampp/etc/my.cnf/
  2. 添加max_connections = your value 示例 max_connections = 5000
  3. sudo systemctl reload-deamon
于 2022-02-26T14:20:47.630 回答
0

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

set global max_connections = '1 < your number > 100000';

这将设置您的 mysql 连接数(需要SUPER权限)。

于 2018-07-13T09:11:59.387 回答