【问题标题】:.NET Applications performance problem on Windows 2003Windows 2003 上的 .NET 应用程序性能问题
【发布时间】:2010-12-12 09:54:57
【问题描述】:

我们有一台配备 8GB RAM 的 2 x Quad Core Xeon 服务器,上面安装了 Windows Server 2003 Enterprise。我们在上面安装了基于 .NET Framework 3.5 的应用服务器。该服务器使用 SQL Server 2005 作为其数据库服务器。

当我们安装应用服务器时,它曾经有超快的性能,一切都很好。一旦我们将它加入我们的域,它的性能就会急剧下降。例如,一个需要 1 秒才能完成的任务,现在大约需要 30 秒。这很奇怪,因为只有基于 .NET 的应用程序的性能受到这种性能影响,而其他应用程序仍以正常速度运行。

有人知道为什么会这样吗?非常感谢任何帮助或建议。

【问题讨论】:

  • 更多细节需要回答这个问题。您在谈论什么样的应用程序(asp.net、NT 服务、winforms)?这个应用程序在做什么(除了查询 SQL 2005 数据库)?
  • 在使用其他硬件之前加入域是否运行更快,或者这是您第一次在域上使用该应用程序?
  • @Darin:服务器是使用 C# 编写的控制台应用程序。它的客户端是一个使用远程连接的winform应用程序。
  • @Adrian:该应用程序之前在其他硬件和域上进行过测试,但这是我们第一次遇到这样的问题。我不得不提到,任何 .NET 应用程序在上述服务器上都会遭受同样的性能下降。这不仅仅是我们应用程序的问题。
  • 我们的应用服务器目前在控制台模式下运行,但一旦部署阶段完成,它将作为 Windows 服务器运行

标签: c# .net performance windows-server


【解决方案1】:

很遗憾,可能需要更多信息来回答您的问题。发生这种情况的原因有很多,其中大多数都与您的代码有关。

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

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

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

【讨论】:

  • 我实际上会专门研究名称解析 - 一般而言,网络延迟不应真正受到加入域的影响。
  • 好点。唉,我们还没有收到@O 的回复。 Askari 关于这个主题。
  • 如果有很多组和/或多个域,也可以是组成员查找。
  • 应用程序严重依赖远程处理在客户端和服务器之间传输数据。但这不是第一次在域上部署此应用程序。它目前在其他地方的压力更大的情况下工作得很好。这就是为什么我找不到问题所在。一旦它在一个工作组中,服务器的硬件用于非常快速地运行我们的应用程序服务器。另外我不得不提一下,现在几乎每个 .NET 应用程序在提到的服务器上都存在性能问题。似乎我们的应用程序不是原因,但我不是 100% 确定。
  • @O. Askari:唯一可以确定的方法是找出延迟发生的位置。分析您的代码。找出导致减速的方法。追踪问题。不要只是假设您的代码是一个黑匣子。问题可能是配置错误或任何数量的问题,但了解减速发生的何处将有助于您找出真正的原因。
【解决方案2】:

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

要检查的另一件事可能是您的数据连接,并确保您正在关闭所有已打开的内容。

最后一件事,就像 Randolpho 说的那样,你真的需要用某种分析器跟踪你的代码执行,看看事情在哪里被捆绑了。

祝你好运!

【讨论】:

  • 感谢您的回答。抱歉,我没有提供更多信息。我们的应用程序服务器目前作为控制台应用程序运行,但一旦我肯定会尝试分析服务器,它将作为 Windows 服务器运行。
【解决方案3】:

我确实找到了我的问题的答案,所以我认为在这里分享它可能会很好。当 CLR 尝试加载程序集时,它希望为具有验证码签名的程序集生成发布者证据。在我们的案例中,CLR 试图连接到 clr.microsoft.com,但我们的服务器的 Internet 访问被阻止,因此每当应用程序服务器尝试加载新程序集时都会造成巨大的延迟。

以下帖子描述了如何禁用此功能:

Bypassing the Authenticode Signature Check on Startup

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 2012-08-22
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    相关资源
    最近更新 更多