I'm using SignalR 2.0.0-beta2
and it's behaving strangely in production environment where an ASP.NET MVC 5
[ .NET Framework 4.5 ] app is installed on Windows Server 2008
with IIS 7
. The AppPool is in Integrated Mode and only has this app.
The GET
request made by SignalR
takes only 60 ms:
http://mysite.org.br/signalr/negotiate?clientProtocol=1.3&_=1374377239338
The problem happens with the POST
request that takes forever. In the most recent test right now it took incredible 3m 1s:
http://mysite.org.br/signalr/send?transport=serverSentEvents&connectionToken=Lp%2BGdI6jVTLPrQ3ZGJ065F9GrMbKYWNmgrtKPZz%2BCUYAsxrqP7hyAMPr%2Bg1E3IRY%2F0brzXVanumPy7NPCFOlcXTRrJssFD2EEoxd6fWhAVEUSfIj
When this intermittent problem happens it generally takes more than 40 seconds to complete the request.
Testing it with Firefox 22
and Firebug... if I disable browser cache, it runs smoothly, that is, there's no delay it the POST
request. Otherwise, when I enable browser cache, it delays again the POST
request.
Using Google Chrome 28
the POST sits there with a pending status.
If I recycle the AppPool
, then the POST
request takes only 203 ms. The only modification I did to this specific AppPool
was that I set Idle Time-out (minutes) = 0
, that is, I'd like to avoid recycling the AppPool.
Looking at Process Explorer I see that w3wp.exe
has 177.300 KB (Private Bytes)
and 211.900 (Working Set)
and CPU
is 0
right now.
Here's SignalR
log information taken from Firebug console:
[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
has these settings:
<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>
From the symptom looks like the response is being buffered somehow. This SignalR issue mentions AVG antivirus being the problem, but I do not have AVG antivirus installed on my client's server. It has McAfee
though.
What can be causing this behavior? If you need any more info to help debug this further, please just ask and I'll do my best to provide it.
Note: in the meantime I reverted back to SignalR stable release 1.1.2 and everything is working fine so far.
Presidents Day 2013 jack white wiz khalifa 2013 Grammys kelly clarkson Lumineers The Lumineers
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.