asp.net - 分析 ASP.NET Web 应用程序的 CPU 使用率 - 但不是数据库!

标签 asp.net performance profiling cpu cpu-usage

我看到我的 ASP.NET Web 应用程序的 CPU 使用率一直很高(仅在实时生产盒上,自然......!)我试图缩小原因 - 它基本上是最大化四核至强盒它不可能做到这一点!

Web 进程的 CPU 使用率通常高于 DB 进程的 CPU 使用率 - 这本身就给我敲响了警钟(?)。

但是,使用标准分析工具(dotTrace、Red Gate 等)只会向您显示在单个方法上花费的时间(而不是实际的 CPU 使用率)——最终仍然突出显示受 DB 限制的方法。虽然这可能表明缓存或更好的索引的机会,但我不明白这本身会如何导致 Web 应用程序进程的高 CPU 使用率?

关于如何缩小范围的任何建议或提示?

谢谢!

最佳答案

一些建议首先尝试。

1.使用发布版本进行部署
检查部署的产品是否处于 Release模式。通过在 Debug模式下运行,加载 pdbs 和程序集会浪费大量时间。

2.禁用 View 状态
如果不需要,请禁用 View 状态。 ViewState 只不过是存储在隐藏字段中以在请求之间持久化的数据。它在服务和请求时都会增加页面的总负载。在序列化或反序列化回发到服务器的 View 状态数据时,还会产生额外的开销。最后, View 状态会增加服务器上的内存分配。

3.禁用 session 状态:

如果您不打算使用它,请禁用 session 状态。默认情况下它是打开的。您实际上可以为特定页面或整个应用程序关闭此功能。

有一些基本的 ASP.NET 应用程序性能监控,查看这两篇 MSDN 文章
"Monitoring ASP.NET Application Performance"Performance Counters for ASP.NET

关于asp.net - 分析 ASP.NET Web 应用程序的 CPU 使用率 - 但不是数据库!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1126434/

相关文章:

c++ - 间歇性地没有数据通过 boost::asio/io 完成端口传递

c# - 算法性能

unit-testing - 如何在 Visual Studio 2010 中进行 Profiler 单元测试?

c# - 使用 Enterprise Library 5.0 数据访问问题

c# - 有没有更好的方法来填充多个下拉列表?

SQL主键: integer vs varchar

MySQL : graph tool to show variables

c# - ASP.NET - 如何从 Swagger Restful API 生成代理类

c# - 分块读取流失败 - 目标数组不够长

sql-server - WHERE 子句中的列顺序重要吗?