2009-11-02 72 views
1

我们有一个2 x四核心Xeon服务器,其上安装有8GB RAM和Windows Server 2003 Enterprise。我们安装了基于.NET Framework 3.5的应用服务器。该服务器使用SQL Server 2005作为其数据库服务器。Windows 2003上的.NET应用程序性能问题

当我们安装应用程序服务器时,它曾经有超高速的性能,一切都很好。一旦我们加入到我们的领域,它的表现就会大幅下降。例如一个需要1秒完成的任务,现在需要大约30秒。这很奇怪,因为只有基于.NET的应用程序的性能得到了这种性能的提升,但其他应用程序仍然以正常速度运行。

有没有人知道为什么会发生这种情况?任何帮助或建议非常感谢。

+0

更多细节将需要回答这个问题。你在谈论什么类型的应用程序(asp.net,NT服务,winforms)?这个应用程序在做什么(除了查询SQL 2005数据库)? – 2009-11-02 20:12:56

+3

在使用其他硬件之前加入域时运行速度是否更快,或者这是您第一次在域中使用该应用程序? – adrianbanks 2009-11-02 20:13:12

+0

@Darin:服务器是使用C#编写的控制台应用程序。它的客户端是一个使用远程连接的Winform应用程序。 – 2009-11-03 03:21:54

回答

1

我确实找到了我的问题的答案,所以我认为这可能是很好的分享它在这里。当CLR尝试加载程序集时,需要为具有authenticode签名的程序集生成发布程序证据。在我们的案例中,CLR试图连接到clr.microsoft.com,但是我们的服务器的互联网访问被阻止,所以无论何时应用程序服务器尝试加载新程序集,都会造成巨大的延迟。

以下职位描述了如何禁用此功能:

Bypassing the Authenticode Signature Check on Startup

3

不幸的是,可能需要更多来回答你的问题。有很多原因可能会导致这种情况发生,其中大部分涉及您的代码。

根据您加入域的症状,然后事情开始造成麻烦,我会说你有很多网络,你以前可以在你的机器本地完成,延迟现在实际上造成麻烦。

但是,这是一个基于信息不足的疯狂猜测。

我建议你分析你的代码。找出执行过程中大部分时间花费在哪里,然后在此处发布代码或其消毒版本,以便我们帮助您优化它。

+1

我实际上会特别关注名称解析 - 一般来说网络延迟不应受到加入域的影响。 – 2009-11-02 21:03:43

+0

优秀的一点。唉,我们还没有收到@O的回复。 Askari关于这个问题。 – Randolpho 2009-11-02 22:17:00

+0

如果有很多组和/或多个域,它也可能是组成员资格查找。 – adrianbanks 2009-11-02 22:23:56

0

我在这里猜测,并认为你在谈论一个Web应用程序。如果这是正确的,您可能需要查看您在Web服务器上设置的应用程序池。当您的应用程序开始运行时,可能会对将自己设置为哪个池感到困惑。

另一件要检查的可能是你的数据连接,并确保你正在关闭所有打开的东西。

最后一件事,就像Randolpho说的那样,你只是需要用某种类型的分析器来执行你的代码执行过程,并且看看事情正在发生什么。

祝你好运!

+0

感谢您的回答。对不起,我没有提供更多信息。我们的应用程序服务器当前作为控制台应用程序运行,但一旦我肯定会尝试配置服务器,它将作为Windows服务器运行。 – 2009-11-03 03:33:04