0

私は、既存のソフトウェア アプリケーションを当社のアプリケーションに移行する責任があります。これは 24 時間以内に完了する必要がありますが、いくつかの問題に直面しています。一部の処理が遅い理由を突き止めようとしています。

私のセットアップ; SQL Server 2008 R2 および 7 つの同一の VM。各 VM では、約 7 つの WCF サービス (通常の WCF だけでなく、Worfklow サービスも) が実行されています。

移行を実行すると、SQL Server で特定の 1 つの VM に SQL サーバーへの接続が増えていることがわかります。これには次のクエリを使用します。

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 には、接続文字列で同じ最小プール サイズと最大プール サイズの設定があります...

SQL には、接続を与える際に何らかの制限がありますか? 設定を微調整する必要がありますか?原因を突き止めるために調べる必要がある特定のパフォーマンス カウンターはありますか?

前もって感謝します!

4

1 に答える 1

1

SQL Server は接続数を制限していません。したがって、「許可」はありません。どなたでもお越しいただけます。特に貪欲な Web サーバーが 1 つだけあります。

サーバーを分析して、非常に多くの接続が開かれている理由を確認します。多くの要求が同時に実行されていますか? 接続は使用後に閉鎖または廃棄されていませんか?

于 2012-04-28T18:45:34.937 に答える