所以,我希望增加最大池大小。问题是我不知道“合理”的增加是多少。现在我没有设置它,只使用默认值100.以下是我更具体的问题:
为什么这个数字默认为100,似乎很低。显着提高到1000或类似的东西有什么负面影响?
有没有一种好方法可以确定应该将这个Max提升到什么位置?
连接池的“范围”是什么?这个池是否都与数据库连接?每个“机器/服务器”连接都有自己的池?
背景:
当我的应用程序运行时,我们收到以下错误:
“超时已过期。从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。”我已经阅读了很多其他类似问题的帖子,所有这些都讨论了我应该如何做两件事之一。
我有一个非常大的应用程序,因此(1)很难确定某个连接是否未被关闭。我找不到一个不是。
答案 0 :(得分:6)
为什么这个数字默认为100,似乎很低。
100个连接大致意味着您可以每秒处理每秒250毫秒的数据库处理,而不会在连接上运行不足。那是相当高的。 如果达到此限制,则需要查看优化。
将它大幅提高到1000或类似的东西有什么负面影响?
Is there a good way to determine what this Max Should be raised to?
粗略地说,它应该是每秒所需的连接数量,即释放每个连接之前所需的平均执行时间。 例如,如果你需要每秒打开一百个新连接,每个连接需要在发布前10秒(这将是非常巨大的),你需要在池中使用1000个连接来长期处理它。 / p>
连接池的“范围”是什么?
我会说它在AppDomain上(会检查)
这个池是否都与数据库连接?
基于连接字符串汇集连接。连接字符串中的任何小差异都会导致不同的池(虽然我不确定它是否区分大小写)
每个“机器/服务器”连接都有自己的池?
关于您的问题,可能有以下几点:
Select @@MAX_CONNECTIONS
上的32767)这似乎不太可能