0

我负责将现有的软件应用程序迁移到我们的应用程序。这是需要在 24 小时内完成的事情,但我面临一些问题。我试图找出为什么有些事情很慢。

我的设置;SQL Server 2008 R2 和 7 个相同的 VM。每个 VM 有大约 7 个 WCF 服务(普通 WCF,但也有 Worfklow 服务)在运行。

当我的迁移运行时,我可以在 SQL Server 中看到 1 个特定 VM 与 SQL Server 有更多连接。我为此使用以下查询:

SELECT des.program_name,des.login_name,des.host_name,
--der.database_id,
COUNT(des.session_id) [Connections]
FROM sys.dm_exec_sessions des
INNER JOIN sys.dm_exec_connections DEC
ON des.session_id = DEC.session_id
WHERE des.is_user_process = 1
--AND des.status != ’running’
GROUP BY des.program_name,des.login_name,des.host_name
--,der.database_id
HAVING COUNT(des.session_id) > 2
ORDER BY COUNT(des.session_id) DESC

我的输出如下:

program_name    login_name  host_name   Connections
.Net SqlClient Data Provider    CONSQL3\Administrator   VM1 120
.Net SqlClient Data Provider    CONSQL3\Administrator   VM5 43
.Net SqlClient Data Provider    CONSQL3\Administrator   VM2 41
.Net SqlClient Data Provider    CONSQL3\Administrator   VM7     39
.Net SqlClient Data Provider    CONSQL3\Administrator   VM4     39
.Net SqlClient Data Provider    CONSQL3\Administrator   VM6 39
.Net SqlClient Data Provider    CONSQL3\Administrator   VM3 38
Microsoft SQL Server Management Studio - Query  CONSQL3\bent    CONSQL3 23
Microsoft SQL Server Management Studio  CONSQL3\bent    CONSQL3 5

我必须能够监控每个 VM 的处理过程,并且我可以看到 VM1 实际上的处理速度要快得多。VM1 也是迁移中第一个启动并开始使用数据库的 VM。说其他 VM 运行速度较慢是因为它们没有尽可能优化地使用连接池,这是否正确?VM1 对连接是否过于贪婪?

每个 VM 在连接字符串中都有相同的 Min Pool Size 和 Max Pool Size 设置...

SQL 在提供连接方面是否有某种限制?我需要调整一些设置吗?是否有我应该查看的特定性能计数器以找出导致此问题的原因?

提前致谢!

4

1 回答 1

1

SQL Server 不限制连接数量。因此,没有“授予”。每个人都可以来开一个。你只有一个特别贪婪的网络服务器。

分析服务器以查看为什么打开了这么多连接。是否有许多请求同时运行?连接是否在使用后未关闭或处置?

于 2012-04-28T18:45:34.937 回答