27

I have a website with very high load and keeping my test app under a hidden iframe to make sure that the target framework is a good choice for my use case. First tried SignalR test app and then Pokein under same server config. Currently we are using Flash remoting solutions but soon we are planning to change it.

I spent some time to make my SignalR based test application to handle concurrent client updating under the high load of my website. It was working good under the scenario (some of the clients requests for message).. when most of the connected clients request for the messages at the same time, it failed dramatically (I needed to remove it from the iframe call).. I had suspected my server configuration is the problem but the same scenario work under other paid solution Pokein without any issue.

Is there any trick i forget?

Feb.10.2012 Update: Although we decided to implement PokeIn into our solution, I tried the latest SignalR code on Github (might be helpful for others).. and the result is the same.

March.13.2012 Update: Scenario: (One more time) -Try to send a message to the thousands of connected clients under a given interval lets say (1 sec). It won't be hard to test and see the result. I feel like, i am the only person around stressing the libraries for this type of very common usage.

Details (How to reproduce - tested with 0.5 from Github) - Server 2008 R2 32GB DDR3, i7-2600 3.4Ghz, 2x256 GB Crucial M4 - ASP.NET 3.5

  • Single page app. updates the time on the client side from the server every seconds
  • This page is embedded into a hidden iframe loaded by several web sites in order make a real life load test.

  • Issues

    • System locks at some point ( approx 800 users) and most of the clients doesn't get the updated time from server

    • Once the system locks, that single app page stops responding

I also tried to increase the interval to 5 secs. This time the system was more responsive (approx. 950 users) but the result was same. I tried this on .NET 2 and .NET 4 application pools.

Hope these details are enough. Repeating this test is quite easy for me and as soon as i found a free time, i will repeat the test with future version.

Tomm Hill
  • 444
  • 4
  • 9
  • You're not getting any feedback; you're question may be vague; are you sure you're not asking for help related to your getting stuck with the solution that you've chosen - as opposed to asking about how to solve whatever you're trying to do with that SignalR thing (never heard of it)? No pun intended - I'm just tring to help get this cracking. :) –  Jan 30 '12 at 22:35
  • 7
    There is no answer because it is the limitation of SignalR. Sad but true.. I was just hoping for a trick but after dealing with the source code i realized the fact.. Anyway, this question may still help someone and may save their time!!! – Tomm Hill Feb 01 '12 at 23:33
  • Ok maybe add that as an answer and close this Q out? – Dave Walker Feb 02 '12 at 12:43
  • 5
    First, update to 0.4, then read https://github.com/SignalR/SignalR/wiki/Performance – davidfowl Feb 08 '12 at 18:18
  • 1
    If that doesn't help at all then come talk to us in the http://jabbr.net/#/rooms/signalr room. – davidfowl Feb 08 '12 at 18:31
  • 25
    It's hard to provide any assistance when you provide no detail of the failure you see. Do you have an exception with a stack trace? A CPU/memory profile? What are the conditions that lead to the failure? What does the message load look like? If there is a problem with SignalR under certain load types we of course would love to know about it and fix it :) – Damian Edwards Feb 08 '12 at 18:37
  • 2
    Damian, i really appreciate your work but all you need to try it under the above scenario. Having 100K connections make no sense unless you can push them the data. This is the only and very basic scenario. – Tomm Hill Feb 10 '12 at 01:25
  • @TommHill data normally comes from **Caching**... if you need to have live data being pushed that fast, maybe you should use other type of database... – balexandre Mar 15 '12 at 19:55
  • database? i'm just sending a simple text... – Tomm Hill Mar 17 '12 at 01:05
  • any chance you can share a project we could run that would repro the problem? Being able to repro the problem locally would make it much easier to debug :) – James Manning Apr 01 '12 at 03:50
  • 6
    If you want someone to help you the least you could do is post the details Damian asked for. You're being pretty uncooperative in response to the commenters trying to help you out. – Giscard Biamby Apr 05 '12 at 00:22
  • 1
    We need benchmarks, test data, examples... better yet provide a link to the example application you developed mentioned in your question. – Jamie Keeling Apr 08 '12 at 19:00
  • It might be good for signalR to publish some load tests, I have not tried it with nearly that many connections, but works great for my app – Patrick Lee Scott Apr 10 '12 at 22:40
  • 9
    We actually just ran load tests with 0.5 like you describe above and got ~30K Sends per second with 5000 concurrent connections and the server broadcasting 10 message per second 32kb each. If you think you have a performance problem, send us your test harness and let us run it. I'd also suggest opening an issue on github. – davidfowl May 09 '12 at 07:35

0 Answers0