我们有一个大部分时间运行良好的公共前台网站。但我们有时会遇到连接高峰(例如在邮件活动之后),并且我们会收到如下错误:
超时已过。从池中获取连接之前超时时间已过。发生这种情况的原因可能是所有池连接都在使用中并且已达到最大池大小
我们非常确定所有连接都已正确关闭(没有连接泄漏)。
因此我们决定增加池中允许的连接数(默认为 100)。
我们将其增加到 1000(max pool size=1000;在我们的连接字符串中),现在我们的站点可以处理大多数连接峰值。(我精确地说该网站在专用服务器上运行)
我的问题是:最大连接池的增加可能会产生哪些负面影响?
编辑:这是我在这些高峰期间使用 sp_who2 时所得到的:
如果最大池设置为 100,则我有超过 100 行“等待命令”行:
| SPID | 地位 | 登录 | 主机名 | 块通过 | 数据库名称 | 命令 | 中央处理器时间 | 磁盘IO | 最后一批 | 程序名称 | SPID | 请求ID |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 数字 | 睡眠 | 数据库用户 | 我网站的 IIS 池名称 | 。 | 我的数据库名称 | 等待命令 | 0 | 0 | 05/10 14:48:59 | .Net SqlClient 数据提供程序 | 137 | 0 |
我可以看到所有“LastBatch”都是在几秒钟前执行的。