2016-04-20 12 views
5

Trong trang SignalR Performance, chúng ta có thể đọc:Thang đo signalr SQL: nhược điểm của việc sử dụng nhiều luồng?

A Stream trong bối cảnh này là một đơn vị quy mô sử dụng bởi các nhà cung cấp ScaleOut ; đây là một bảng nếu SQL Server được sử dụng, một chủ đề nếu dịch vụ xe buýt được sử dụng, và một thuê bao nếu Redis được sử dụng. Mỗi luồng đảm bảo các hoạt động đọc và ghi được đặt hàng; a luồng đơn là một nguy cơ nút cổ chai quy mô, do đó, số lượng luồng có thể được tăng lên để giúp giảm tắc nghẽn đó. Nếu sử dụng nhiều luồng, SignalR sẽ tự động phân phối các thông báo (shard) qua các luồng này theo cách để đảm bảo các thư được gửi từ bất kỳ kết nối nhất định nào theo thứ tự.

Số đếm dòng (. Tức là bảng trong SQL) có thể được thiết lập như thế này:

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

Nhưng TableCount là 1 theo mặc định trong SQL ScaleOut. Nếu đây là một nút cổ chai quy mô, tại sao nó là 1 theo mặc định? Nếu tôi đặt nó là 50 thì sao?

Tài liệu không đưa ra bất kỳ đầu mối nào để quyết định giá trị nào cần cung cấp. Tôi có nên đặt nó thành 1, 3, 10, 1000 không? Ưu và khuyết điểm của một giá trị lớn là gì? Nó chỉ tăng độ trễ?

Trả lời

-1

Từ các tài liệu:

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

TableCount
Gets hoặc đặt số bảng để lưu trữ các tin nhắn trong Sử dụng nhiều bảng giảm ganh khóa và có thể tăng thông lượng.. Điều này phải nhất quán giữa tất cả các nút trong trang trại. Mặc định là 1.

+0

Điều này không trả lời được câu hỏi của tôi, vui lòng đọc lại câu hỏi. – JYL

Các vấn đề liên quan