应用程序在部署在数据库服务器上时工作但在其他工作缓慢时部署

时间:2016-04-02 10:28:26

标签: sql-server

当我们在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完美配合。 任何帮助将受到高度赞赏。

1 个答案:

答案 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);