我有一个服务器,很多用户将连接到它并在那里使用数据库,我正在使用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)
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你可以测试自己.
| 归档时间: |
|
| 查看次数: |
89071 次 |
| 最近记录: |