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);
ただし、TableCount
SQL スケールアウトでは既定で 1 です。これがスケールのボトルネックである場合、なぜデフォルトで 1 なのですか? 50 に設定するとどうなりますか?
ドキュメントには、どの値を指定するかを決定する手がかりはありません。1、3、10、1000 に設定する必要がありますか? 大きな値の長所と短所は何ですか? レイテンシが増加するだけですか?