当我们在Same Data Base服务器上部署时,我们有一个MVC Web应用程序正常工作。但是当我们分离Data Base和Application Servers时,应用程序的性能变得非常慢。 Bellow是OS和通信矩阵的细节。
数据库服务器:Windows Server 2012上安装的Microsoft SQL Server 2014
r2应用服务器:两个应用服务器windows 2012 r2加载
由F5启用平衡。
我还想在这里提到相同的应用程序与SQL server 2008 r2完美配合。 任何帮助将受到高度赞赏。
答案 0 :(得分:0)
您确实需要提供更多详细信息。
这些服务器之间的网络怎么样?这两台机器是否在同一个数据中心?例如,尝试从applicationserver ping数据库服务器。 ping的结果是什么?
更新
行。我应该首先做的是从数据库角度看,以便您可以看到问题所在。您知道如何使用SQL Server Profiler执行跟踪吗?尝试在使用应用程序时执行跟踪。也尝试成为唯一一个使用此应用程序的人,因此您的跟踪很容易理解。您需要检查查询是否快速执行。
您还可以查看等待统计信息:
WITH Waits AS
(SELECT wait_type, wait_time_ms / 1000. AS wait_time_s,
100. * wait_time_ms / SUM(wait_time_ms) OVER() AS pct,
ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS rn
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN ('CLR_SEMAPHORE','LAZYWRITER_SLEEP','RESOURCE_QUEUE','SLEEP_TASK'
,'SLEEP_SYSTEMTASK','SQLTRACE_BUFFER_FLUSH','WAITFOR', 'LOGMGR_QUEUE','CHECKPOINT_QUEUE'
,'REQUEST_FOR_DEADLOCK_SEARCH','XE_TIMER_EVENT','BROKER_TO_FLUSH','BROKER_TASK_STOP','CLR_MANUAL_EVENT'
,'CLR_AUTO_EVENT','DISPATCHER_QUEUE_SEMAPHORE', 'FT_IFTS_SCHEDULER_IDLE_WAIT'
,'XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP'))
SELECT W1.wait_type,
CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS wait_time_s,
CAST(W1.pct AS DECIMAL(12, 2)) AS pct,
CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct
FROM Waits AS W1
INNER JOIN Waits AS W2
ON W2.rn <= W1.rn
GROUP BY W1.rn, W1.wait_type, W1.wait_time_s, W1.pct
HAVING SUM(W2.pct) - W1.pct < 99 OPTION (RECOMPILE); -- percentage threshold
GO
重置这些统计信息也是一个好主意,因为这些度量是从上次SQL Server重新启动求和的。您可以重新启动这些统计信息:
DBCC SQLPERF('sys.dm_os_wait_stats', CLEAR);