2

我有一个带有实体框架的 asp .net webApplication,它在生产服务器中运行速度相当慢。

我在 localhost 中针对本地 SQLServer 数据库进行测试,在生产服务器中,应用程序也使用本地数据库。

因此,我预计生产时间会相似,如果不是更快的话。

服务器是一台新机器,比我的机器具有更多的 RAM 和更快的处理器。

我发现改进代码对我有很大帮助(比如 stringBuilder 替换了很多 concats),但我无法理解的是时间上的差异!

我总是在发布模式下比较时间。使用简单的 Visual Studio 发布。

我应该从哪里开始?

IIS 在生产中?SQL 服务器?可以是连接字符串吗?继续调查代码?

提前致谢,

迪奥戈

4

4 回答 4

3

我将从分解问题开始。例如 sql server 时间和 iis 时间。您可以分离代码的不同部分并测量执行时间等。

SQL Server Profiler是开始使用和用于 ASP.NET 的好工具。您可以从简单的跟踪页面跟踪开始。

有关测试性能的更多信息

您应该在生产和开发机器中拥有相同的数据才能获得相同的结果。此外,生产服务器可能会忙于您在开发机器上可能没有的其他事情。

于 2012-08-03T16:31:34.867 回答
1

我建议使用Glympse来获取有关生产中正在发生的事情的更详细信息。

另一件要考虑的事情是Server vs. Workstation 垃圾收集器。这绝对是在开发机器上运行站点与将站点部署到服务器之间的区别之一。

过去曾出现过一些服务器 GC 导致性能问题的情况

于 2012-08-03T17:03:09.203 回答
0

试试 Perfview http://www.microsoft.com/en-us/download/details.aspx?id=28567,基于 ETL,专为分析托管代码性能而设计。

于 2012-08-03T17:22:47.843 回答
0

对我来说,结果是 system.codedom 导致生产环境中的性能缓慢,而在调试时本地 IIS Express 中一切正常。

检查您的 Web.config 并删除以下内容。

 <system.codedom>
<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers></system.codedom>

如果您进行预编译并且仅使用 Web 服务器上已编译的程序集,则可以从 web.config 中安全地删除这些程序集。

于 2022-02-11T22:12:46.977 回答