我负责将现有的软件应用程序迁移到我们的应用程序。这是需要在 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 在提供连接方面是否有某种限制?我需要调整一些设置吗?是否有我应该查看的特定性能计数器以找出导致此问题的原因?
提前致谢!