在我的应用程序中,我遇到了汇集连接泄漏的问题。
大约每3周,池限制就会耗尽,并且需要重新启动应用程序服务器。从Sql server'的组' .Net数据提供程序中观察性能计数器。对于我的应用程序,我注意到有时计数器NumbeOfInactiveConnectionPools
的值在短时间内(大约30秒)增加1并且它们减少到原来的状态。偶尔会增加1并且不会减少。长期值变为1.然后它继续增加1并减少。结果,现在长期价值是2.
这是连接泄漏的原因吗?有人可以向我解释这个计数器的含义以及连接池何时变为非活动状态?我找到了我发现here的计数器的描述,但它很差。
答案 0 :(得分:0)
NumberOfInactiveConnectionPools似乎与当前连接数没有任何关系。 您必须监视活动连接池的数量和活动连接的数量。
我不明白为什么你需要重新启动你的应用服务器(你的应用程序托管在IIS上吗?) - 你现在可能没有免费连接 - 但你应该及时拥有它们。
不幸的是,超出池大小可能是由于应用程序设计不佳造成的。 您应该检查代码的某些特定部分是否始终抛出异常,或者是否随机发生异常。
如果它始终是相同的代码 - 您应该重新设计此功能。 如果它是随机的,则将连接字符串中的MaxPoolSize更改为更大的数字。