Iis 7 Windows Server 2008上的SignalR serverSentEvents和IIS 7 POST请求花费太多时间完成

Iis 7 Windows Server 2008上的SignalR serverSentEvents和IIS 7 POST请求花费太多时间完成,iis-7,signalr,signalr-hub,server-sent-events,postdelayed,Iis 7,Signalr,Signalr Hub,Server Sent Events,Postdelayed,我正在使用它,它在生产环境中表现得很奇怪,在生产环境中,ASP.NET MVC 5[.NET Framework 4.5]应用程序安装在Windows Server 2008和IIS 7上。AppPool处于集成模式,并且只有此应用 信号机发出的获取请求只需60毫秒: http://mysite.org.br/signalr/negotiate?clientProtocol=1.3&_=1374377239338 http://mysite.org.br/signalr/send?tr

我正在使用它,它在生产环境中表现得很奇怪,在生产环境中,
ASP.NET MVC 5
[.NET Framework 4.5]应用程序安装在
Windows Server 2008
IIS 7
上。AppPool处于集成模式,并且只有此应用

信号机发出的
获取
请求只需60毫秒

http://mysite.org.br/signalr/negotiate?clientProtocol=1.3&_=1374377239338
http://mysite.org.br/signalr/send?transport=serverSentEvents&connectionToken=Lp%2BGdI6jVTLPrQ3ZGJ065F9GrMbKYWNmgrtKPZz%2BCUYAsxrqP7hyAMPr%2Bg1E3IRY%2F0brzXVanumPy7NPCFOlcXTRrJssFD2EEoxd6fWhAVEUSfIj
问题发生在
POST
请求中,该请求需要花费很长时间。在最近的测试中,它花费了难以置信的3m 1s

http://mysite.org.br/signalr/negotiate?clientProtocol=1.3&_=1374377239338
http://mysite.org.br/signalr/send?transport=serverSentEvents&connectionToken=Lp%2BGdI6jVTLPrQ3ZGJ065F9GrMbKYWNmgrtKPZz%2BCUYAsxrqP7hyAMPr%2Bg1E3IRY%2F0brzXVanumPy7NPCFOlcXTRrJssFD2EEoxd6fWhAVEUSfIj
当这种间歇性故障发生时,完成请求通常需要40秒以上

用Firefox22和Firebug测试它。。。如果禁用浏览器缓存,它将平稳运行,也就是说,它不会延迟
POST
请求。否则,当我启用浏览器缓存时,它会再次延迟
POST
请求

使用
googlechrome28
POST在那里以挂起状态显示

如果我循环使用
AppPool
,则
POST
请求只需203 ms。 我对这个特定的
AppPool
所做的唯一修改是设置了
空闲超时(分钟)=0
,也就是说,我希望避免循环使用AppPool

查看Process Explorer,我看到它的
177.300 KB(专用字节)
211.900(工作集)
CPU
现在是
0

以下是从Firebug控制台获取的
Signal
日志信息:

[00:27:20 GMT-0300] SignalR: Negotiating with '/signalr/negotiate?clientProtocol=1.3'.
Signal...FCU9MU1 (line 1)
GET http://mysiste.org.br/signalr/negotiate?clientProtocol=1.3&_=1374377239338 200 OK 62ms  
js?v=K...xUBM641 (line 1)
[00:27:20 GMT-0300] SignalR: Attempting to connect to SSE endpoint 'http://mysiste.org.br/signalr/connect?transport=serverSentEvents&connectionToken=Lp%2BGdI6jVTLPrQ3ZGJ065F9GrMbKYWNmgrtKPZz%2BCUYAsxrqP7hyAMPr%2Bg1E3IRY%2F0brzXVanumPy7NPCFOlcXTRrJssFD2EEoxd6fWhAVEUSfIj&connectionData=%5B%7B%22name%22%3A%22assessmenthub%22%7D%5D&tid=5'
Signal...FCU9MU1 (line 1)
[00:27:20 GMT-0300] SignalR: EventSource connected
Signal...FCU9MU1 (line 1)
[00:27:20 GMT-0300] SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332 and a connection lost timeout of 20000
Signal...FCU9MU1 (line 1)
POST http://mysiste.org.br/signalr/send?transport=s...F0brzXVanumPy7NPCFOlcXTRrJssFD2EEoxd6fWhAVEUSfIj 200 OK 3m 1s 
js?v=K...xUBM641 (line 1)
[00:39:12 GMT-0300] SignalR: EventSource readyState: 0
Signal...FCU9MU1 (line 1)
[00:39:12 GMT-0300] SignalR: EventSource reconnecting due to the server connection ending
Signal...FCU9MU1 (line 1)
[00:39:14 GMT-0300] SignalR: EventSource calling close()
Signal...FCU9MU1 (line 1)
[00:39:14 GMT-0300] SignalR: serverSentEvents reconnecting
Signal...FCU9MU1 (line 1)
[00:39:14 GMT-0300] SignalR: Attempting to connect to SSE endpoint 'http://mysiste.org.br/signalr/reconnect?transport=serverSentEvents&connectionToken=Lp%2BGdI6jVTLPrQ3ZGJ065F9GrMbKYWNmgrtKPZz%2BCUYAsxrqP7hyAMPr%2Bg1E3IRY%2F0brzXVanumPy7NPCFOlcXTRrJssFD2EEoxd6fWhAVEUSfIj&connectionData=%5B%7B%22name%22%3A%22assessmenthub%22%7D%5D&messageId=d-k%2C0%7Cx%2C0%7Cy%2C1%7Cz%2C0&tid=5'
Signal...FCU9MU1 (line 1)
[00:39:44 GMT-0300] SignalR: Couldn't reconnect within the configured timeout (30000ms), disconnecting.
Signal...FCU9MU1 (line 1)
[00:39:44 GMT-0300] SignalR: SignalR: Stopping connection.
My
Web.config
具有以下设置:

<system.web>
.
.
.
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
        <providers>
            <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
         </providers>
    </sessionState>
</system.web>

<system.webServer>
  <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="false" />
  <validation validateIntegratedModeConfiguration="false" />
  <staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
  </staticContent>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor" />
  </modules>
  <handlers>
    <add name="AttributeRouting" path="routes.axd" verb="*" type="AttributeRouting.Web.Logging.LogRoutesHandler, AttributeRouting.Web" />
  </handlers>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="10240"></requestLimits>
    </requestFiltering>
  </security>
</system.webServer>

.
.
.
提到AVG antivirus是问题所在,但我的客户端服务器上没有安装AVG antivirus。不过它有
McAfee

是什么导致了这种行为?如果您需要任何更多的信息来帮助进一步调试,请直接询问,我会尽力提供



注意:在此期间,我恢复到SignalR stable release 1.1.2,到目前为止一切正常。

只是为了向将来可能发现此问题的所有人说明这一点:

该问题与ASP.NET中使用的有关。如前所述:


使用带有信号器的会话根本不起作用。它会提出所有要求 获取会话锁,这可能就是您看到这些的原因 问题

因此,解决方案是:从
Web.config
文件中删除
配置以及
Global.asax
中可能存在的任何会话事件

<sessionState mode="InProc" customProvider="DefaultSessionProvider">
    <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
    </providers>
</sessionState>


要真正解决此问题。

您是否使用会话?@dfowler:使用
sessionState
信息检查更新的
Web.config
设置,如果这就是您所说的
session
。将会话与SignalR一起使用根本不起作用。它将使所有请求都获得会话锁,这可能就是您看到这些问题的原因。是的,删除会话并从Global.asax中删除会话事件,它应该可以工作。更新到SignalR 2.0.0