2016-08-15 102 views
0

我正在使用MySqlConnector for .Net。池默认打开。现在,正如其他有关人员在网络上所说的那样,这意味着我得到了一些睡眠连接。我的问题是这样的:连接池如何工作?

假设我的服务器可以处理300个连接(大概是AWS RDS上的4GB RAM RDS MySql服务器允许的),假设我有300个睡眠连接。当连接301应用程序请求,将:

一)池使用其现有的沉睡300个连接
B)抛出一个最大连接错误之一,并拒绝连接

据我了解, A应该是答案,因为池会发出无效(睡眠)连接。 B应该是发生了什么,如果你有300个并发的ACTIVE连接(例如运行查询),对吗?

我只想到这个底部,因为max_connections = 300让我感到惊讶,因为它似乎很低。

感谢,鲍勃

回答

1

只要有连接池中自由连接,并在MySQL服务器中有可用的连接,以及(你可以有你的应用程序的连接池外的连接),您的应用程序不应该得到任何太多的连接错误。

300个并发连接是否足够满足您的需求可以通过压力测试来确定,在压力测试中,您可以模拟高峰期预期的当前用户数。通过优化数据库连接代码(在需要之前打开连接,关闭它不再需要它)300个并发数据库连接可以轻松地支持更多的并发用户。

+0

睡眠连接是一个免费的连接,所以我想问。 –

+0

我的意思是,我正在寻求问。 –

+0

不受您应用程序的观点影响。不能从没有使用连接池的任何其他应用程序的角度来解放。 – Shadow