We have a pretty basic pub/sub application, where clients register to sessions and get updates that concern them (depending on user's group or status for example) from other participants.
Notifications about updates are sent using SignalR, which runs on Azure Mobile Services standard instance.
Each user is in two SignalR group: one that contains all users in session (group name = sessionGuid) and one that contains only that user in that session (group name = sessionGuid + userGuid). That way we can easily send appropriate notifications to each user.
This works fine when there's small number of users, but when the amount of connected clients is close to 20, whole service seems to freeze and the only thing that helps is closing all the clients so that service can recover. It seems some kind of DDOS attack, but the amount of connections that causes this is ridiculous. It is after all biggest Mobile Service instance Azure has to offer and once in production, service should be able to handle thousands simultanous users.
Clients are build using WinRT and .NET (WPF), so I believe WebSockets are used. Message sizes are small as only few Guids are send and even the sending rate isn't that fast (max 1 per second)
I planned to move our service from Mobile Services to Azure Web Sites hoping that would help, but I'm worried it won't. Any ideas? Could Mobile Services be that bad bottle neck? Is there some configurations that I missed that would help? Backplane?
Few exeptions from the log:
Error while sending: System.Net.WebSockets.WebSocketException (0x8000000E): A method was called at an unexpected time at System.Web.WebSockets.WebSocketPipe.<>c__DisplayClass1.b__0(Int32 hrError, Int32 cbIO, Boolean fUtf8Encoded, Boolean fFinalFragment, Boolean fClose) ---
System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: The server was unable to process the request; please retry the operation. If the problem persists, please contact your Service Bus administrator and provide the tracking id.
User contributions licensed under CC BY-SA 3.0