【问题标题】:Random high JIT time in ASP.Net web appASP.Net Web 应用程序中的随机高 JIT 时间
【发布时间】:2012-11-29 14:49:49
【问题描述】:

我们的 asp.net 应用程序目前遇到大量有关性能的问题。一直在进行各种调查,目前唯一突出的是工作进程的“JIT 时间百分比”性能计数器。

在一个网站上,这往往会持续飙升至 90-95%,但很难确定这是否具有任何真正的意义,或者只是一个转移注意力的问题。该站点以发布模式发布,编译调试标志设置为 false,按预期在初始加载时发生完全 JIT,但是,当在站点周围导航时,我们仍然会在 JIT 时间计数器中​​看到这些持续的峰值。有没有人可以帮助了解这个时间是如何计算的,以及它是否是一个可靠的性能指标?

更奇怪的是,在本地 IIS 安装上测试 Web 应用程序时,我再次注意到,初始 JIT 按预期发生,但“% time in JIT”计数器的峰值仅在初始加载时发生每个单独的页面 - 如果我立即刷新该页面,计数器保持在 0。如果我等待几分钟,然后再次刷新该页面,计数器会达到峰值。这应该发生有什么原因吗?这几乎就像页面是 JIT 编译然后缓存了几分钟。

到目前为止,我一直在研究与此计数器相关的要点是 LINQ 查询、正则表达式和通过反射进行的调用,但运气不佳。

非常感谢任何建议/帮助, 谢谢。

【问题讨论】:

  • 应用程序池有什么疯狂的设置吗?
  • 您可以分析应用程序或附加调试器吗?
  • 没有尝试过 NGEN 但一直在看,所以现在再看一下。不确定它是否会解决当前的问题,但尝试一下不会有什么坏处。 NGEN 的唯一缺点是必须在主机(本例中为 Web 服务器)上运行它。没有我知道的“疯狂”设置,并且有内存分析,但没有什么是真正尖叫出来的。
  • 您是否检查过事件日志以查看这是否与应用程序池回收一致(jit 是否仅在应用程序池回收后发生?)

标签: c# asp.net .net iis jit


【解决方案1】:

您是否确认已在 web.config 文件中关闭调试?

<compilation debug="false"/>

您也可以省略 debug 属性,因为默认值为 false,但出于故障排除的目的,我会明确设置它。

【讨论】:

  • 谢谢,但是我们有这套。作为我们构建过程的一部分,我们确保将此值设置为 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 2013-08-16
  • 2010-09-21
  • 1970-01-01
相关资源
最近更新 更多