Windows 8.1。 IIS 8.5。 SignalR版本:
<package id="Microsoft.AspNet.SignalR" version="2.1.2" targetFramework="net451" />
<package id="Microsoft.AspNet.SignalR.Core" version="2.1.2" targetFramework="net451" />
<package id="Microsoft.AspNet.SignalR.JS" version="2.1.2" targetFramework="net451" />
<package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.1.2" targetFramework="net451" />
每当我重建我的项目/解决方案时,IIS都会达到最大CPU使用率,我无法重新加载我的页面。我检查了procmon.exe,它报告了大量(> 20 000 / s)的“RegOpenKey / RegQueryKey”操作,如下所示:
Date & Time: 19.11.2014 10:47:20
Event Class: Registry
Operation: RegQueryKey
Result: SUCCESS
Path: HKLM
TID: 23272
Duration: 0.0000059
Query: HandleTags
HandleTags: 0x0
Date & Time: 19.11.2014 10:47:20
Event Class: Registry
Operation: RegOpenKey
Result: REPARSE
Path: HKLM\SYSTEM\CurrentControlSet\Services\SignalR\Performance
TID: 23272
Duration: 0.0000121
Desired Access: Read
Date & Time: 19.11.2014 10:47:20
Event Class: Registry
Operation: RegOpenKey
Result: NAME NOT FOUND
Path: HKLM\System\CurrentControlSet\Services\SignalR\Performance
TID: 23272
Duration: 0.0000062
Desired Access: Read
以下是我用来重现此问题的步骤:
我也在IIS Express中遇到过这种情况。通常我通过杀死IIS工作进程并重新加载来解决此问题。这是权限问题吗?目前,应用程序池在我的本地用户下运行,但我尝试了具有相同结果的应用程序池标识。什么应该在“HKLM \ System \ CurrentControlSet \ Services \ SignalR \ Performance”?目前我的机器上没有这样的注册表项。
答案 0 :(得分:4)
我以前没见过这种行为。是20,000 / s&#34; RegOpenKey / RegQueryKey&#34;持续2-3分钟的操作?所有这些操作都是否访问&#34; HKLM \ System \ CurrentControlSet \ Services \ SignalR \ Performance&#34;路径?
SignalR旨在在任何性能计数器无法加载后停止进一步加载性能计数器。
或许installing the SignalR performance counters可以解决您的问题。这将创建HKLM \ System \ CurrentControlSet \ Services \ SignalR \ Performance。
您必须确保您的应用程序池在&#34;性能监视器用户&#34;中的用户下运行。基。
答案 1 :(得分:2)
https://github.com/SignalR/SignalR/issues/3414
显然,问题是由CultureInfo
从其他AppDomain
泄露引起的。它发生在PerformanceCounter
命名空间中的System.Diagnostics
类构造函数中。
请参阅此处的详细分析:http://www.zpqrtbnk.net/posts/appdomains-threads-cultureinfos-and-paracetamol
在撰写本文时,尚未发布新的软件包,但很快就会通过NuGet官方Feed提供修复程序。修复包含在Microsoft.AspNet.SignalR.Core
包中。