StatusUpdateHubと呼ばれるSignalRハブがあります。このハブは、HubClientという.NETクライアントによって更新されます。このクライアントは、さまざまなトランザクションに対して、複数のユーザーが毎秒約1000回呼び出されます(運用中)。ここでは、クライアントコードは次のとおりです。SignalRハブスケーラビリティの問題
このコードは、それが正常に動作しているが、我々は250に同時ユーザーの数を増やすときに私たちは、次のエラーが表示されている100人の同時ユーザーと呼ばれているpublic static class HubClient
{
private static readonly string statusUpdateUrl = ConfigurationManager.AppSettings["StatusUpdateUrl"];
private static readonly HubConnection connection = new HubConnection(statusUpdateUrl);
private static readonly IHubProxy hub = connection.CreateProxy("StatusUpdateHub");
internal static void UpdateBrowser(long transactionId)
{
connection.Start().ContinueWith(task => hub.Invoke("UpdateTransactionStatus", transactionId)).ContinueWith(task =>
{
if (task.IsFaulted && task.Exception != null)
{
// log error
}
});
}
}
:
Unexpected error in UpdateBrowser: System.InvalidOperationException: The connection has not been established. at SignalR.Client.Connection.SignalR.Client.IConnection.Send[T](String data) at SignalR.Client.Hubs.HubProxy.Invoke[T](String method, Object[] args) at SignalR.Client.Hubs.HubProxy.Invoke(String method, Object[] args) at Application.Services.HubClient.<>c_DisplayClass2.b_0(Task task1) in c:\Build\Work\Application\Services\HubClient.cs:line 20
at System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)
at System.Threading.Tasks.Task.Execute()
コードをよりスケーラブルにする方法を教えてください。
多分、サーバー上の同時接続に制限がありますか? – Stilgar
実行中のメモリ消費も監視していますか?あなたですか?あなたの接続数/切断数の増加に伴ってどのようなトレンドが見られているのか不思議です。私は、アプリで未発表のメモリがいくつか見えていて、それがSignalRなのか他のものなのか不思議に思っていました。 – ElHaix
@Stilgar私たちは何の制限も設定していません。 machine.configでどのような設定を変更する必要がありますか? –