Windows 8.1. IIS 8.5. SignalR versions:
I have not seen this behavior before. Are the 20,000/s "RegOpenKey/RegQueryKey" operations lasting from 2-3 minutes continuously? Are all of these operations accessing the "HKLM\System\CurrentControlSet\Services\SignalR\Performance" path?
SignalR is designed to stop further loading of performance counters after any performance counter fails to load.
Perhaps installing the SignalR performance counters will resolve your issue. This will create HKLM\System\CurrentControlSet\Services\SignalR\Performance.
You will have to ensure that your application pool runs under a user in the "Performance Monitor Users" group.
Good news! It seems that this issue is officially raised and there is a fix applied. Just wanted to share this if anyone has the same problem.
https://github.com/SignalR/SignalR/issues/3414
Apparently, problem was caused by a CultureInfo
that leaked from a different AppDomain
. It happens in PerformanceCounter
class constructor in System.Diagnostics
namespace.
See detailed analysis here: http://www.zpqrtbnk.net/posts/appdomains-threads-cultureinfos-and-paracetamol
At the time of writing a new package is not yet released, but soon fix should become available through official NuGet feed. Fix is contained in Microsoft.AspNet.SignalR.Core
package.