6

SignalR Performanceページでは、以下を読み取ることができます。

このコンテキストでのストリームは、スケールアウト プロバイダーによって使用されるスケール ユニットです。これは、SQL Server が使用されている場合はテーブル、Service Bus が使用されている場合はトピック、Redis が使用されている場合はサブスクリプションです。各ストリームは、順序付けられた読み取りおよび書き込み操作を保証します。単一のストリームはスケールのボトルネックになる可能性があるため、ストリームの数を増やしてそのボトルネックを減らすことができます。複数のストリームが使用されている場合、SignalR は、特定の接続から送信されたメッセージが適切な順序で送信されるように、これらのストリーム間でメッセージを自動的に分散 (シャード) します。

ストリーム数 (つまり、SQL のテーブル) は次のように設定できます。

var connectionString = "(your connection string)";
var config = new SqlScaleoutConfiguration(connectionString) { 
    TableCount = 3,
    MaxQueueLength = 50 };
GlobalHost.DependencyResolver.UseSqlServer(config);

ただし、TableCountSQL スケールアウトでは既定で 1 です。これがスケールのボトルネックである場合、なぜデフォルトで 1 なのですか? 50 に設定するとどうなりますか?

ドキュメントには、どの値を指定するかを決定する手がかりはありません。1、3、10、1000 に設定する必要がありますか? 大きな値の長所と短所は何ですか? レイテンシが増加するだけですか?

4

1 に答える 1

-1

ドキュメントから:

https://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.sqlscaleoutconfiguration(v=vs.118).aspx

TableCount
メッセージを格納するテーブルの数を取得または設定します。より多くのテーブルを使用すると、ロックの競合が減少し、スループットが向上する場合があります。これは、Web ファーム内のすべてのノード間で一貫している必要があります。デフォルトは 1 です。

于 2016-10-17T12:40:23.757 に答える