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