gpt4 book ai didi

c# - 我如何知道实际的 SQL Server 客户端连接池利用率?

转载 作者:行者123 更新时间:2023-11-30 22:18:04 25 4
gpt4 key购买 nike

我的 C# 代码使用 SqlConnection 连接到 SQL Azure。有时我会面临以下情况:

System.InvalidOperationException
Timeout expired. The timeout period elapsed prior to obtaining a connection
from the pool. This may have occurred because all pooled connections were
in use and max pool size was reached.
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(
DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(
DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
// my code calling SqlConnection.Open()

我想找出我遇到此异常的原因。异常可能是因为我已经耗尽了连接池,但我不完全确定,如果我确定我想知道我是如何到达那里的。

我的代码是否有可能获得最大池大小和当前池利用率(已使用和未使用的连接数)?

最佳答案

SQL Azure 数据库的最大连接数为 180 个连接。这是一个硬性限制。

http://msdn.microsoft.com/en-us/library/windowsazure/ff394114.aspx

-- monitor connectionsSELECT      e.connection_id,      s.session_id,      s.login_name,      s.last_request_end_time,      s.cpu_timeFROM      sys.dm_exec_sessions s      INNER JOIN sys.dm_exec_connections e      ON s.session_id = e.session_idGO

此查询将允许查看当前连接。上面的链接还有一些非常有用的查询,用于计算连接的来源。

我将此查询用作我们在 cron 作业中运行的诊断设置和报告的一部分,以确保我们不会走向中断。

如前所述,最大池会有所帮助,但这取决于 SQL Azure 前面的计算数量。

当你遇到这类问题时,你需要弄清楚你是否有关闭方面的连接问题,或者你需要开始考虑更高级的解决方案,如分片。

hths, 詹姆斯

关于c# - 我如何知道实际的 SQL Server 客户端连接池利用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com