asp.net - iis 7.5 ASP.net 挂起请求

标签 asp.net performance iis webserver

我的 iis 网络服务器有一些性能问题。它是随机挂起的,我想弄清楚如何加速服务器。我在服务器上启用了失败请求跟踪,并将其设置为在请求超过 3 秒时生成日志。

结果日志(xml)没有显示太多,但在紧凑的性能日志中有一个点,表明服务器卡在日志的哪个部分。以下是发生大量时间损失的日志部分。
65. i GENERAL_GET_URL_METADATA PhysicalPath="", AccessPerms="513" 17:46:32.57766. i HANDLER_CHANGED OldHandlerName="", NewHandlerName="ExtensionlessUrlHandler-Integrated-4.0", NewHandlerModules="ManagedPipelineHandler", NewHandlerScriptProcessor="", NewHandlerType="System.Web.Handlers.TransferRequestHandler" 17:46:32.57767. i VIRTUAL_MODULE_UNRESOLVED Name="FormsAuthentication", Type="System.Web.Security.FormsAuthenticationModule" 17:46:47.771
我不确定 Handler 改变了什么,但这需要很长时间,任何关于从哪里开始寻找的提示都会很好。

最佳答案

如果没有任何代码,很难提出解决方案。为了在 ASP.NET 应用程序中获得出色的性能,您可以遵循以下一些一般提示/技巧。

  • 执行请求的最快方法是一开始就不要执行。尝试缓存可以缓存的所有内容。有服务器端缓存和客户端缓存。每个都有自己的用途,但您不仅限于一种类型。
  • 确保您没有将任何与请求相关的对象的引用缓存和/或保留到内存中。 ASP.NET 的并发请求数量有限,如果线程用完,将请求引用保留在内存中会挂起您的服务器
  • 完成后立即关闭请求
  • 请求时客户端不需要的一切都应该在后台完成
  • 确保您的应用程序中没有内存泄漏。垃圾回收通常是 ASP.NET 应用程序挂起的原因。垃圾收集时,所有正在运行的线程都会暂停。对于 Gen 2 尤其如此垃圾收集。您可以 enable background generation 2 garbage collections .
  • 隔离有问题的代码。使用分析器并查看哪种类型的请求是 CPU 密集型的。然后深入挖掘,看看该请求内部是什么让它变慢了。
  • 在任何平衡良好的应用程序中,对象要么是短暂的,要么是永远存在的。对于 ASP.NET 应用程序,在请求过程中创建的对象理想情况下应该在该请求内或在下一个 GC gen 0 期间消亡。
  • 考虑对大对象和需要初始化很长时间的对象进行对象池化
  • 确保您的应用程序池没有完全崩溃和重新启动(查看 IIS 日志和/或 Windows 事件)

  • 您可以使用一些有用的调试工具:
  • LeanSentry .非常适合诊断 ASP.NET 服务器挂起
  • windbg .高学习曲线但迄今为止您可以使用的最强大的调试工具
  • PerfView .用于分析 ETW 事件,如 I/O 或 CPU 使用率
  • 关于asp.net - iis 7.5 ASP.net 挂起请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24212838/

    相关文章:

    asp.net - 为什么 ModalPopupExtender 不通过 javascript 显示?

    performance - 在 3 个数组中搜索公共(public)数的复杂性

    iis - 防止浏览器提示输入 IIS 应用程序的客户端证书

    debugging - Visual Studio 2015 : Debug session does not terminate properly

    html - IIS Web 服务器 - 如何限制每个用户一次登录视频流

    c# - 异常返回 : unable to evaluate expression because the code is optimized or a native frame is on top of the call stack

    asp.net - 类型化数据集中的SQL查询导致解析器错误

    c# - 使用 Google Maps API 的位置标记问题

    C++ & DirectX - 几何问题

    c# - SerialPort RS-485 和通信限制