匯出 (0) 列印
全部展開
本主題尚未接受評分 - 為這個主題評分

效能考量

所有 適用於 Windows Server 的服務匯流排 訊息實體 (佇列、主題、訂閱) 均儲存在容器中。各個容器僅與一個資料庫相關聯,資料庫將實際儲存實體及其所有的訊息。資料庫可服務一個容器。如果建立的容器,也將建立新的資料庫。建立佇列或主題時,適用於 Windows Server 的服務匯流排 會將實體指派到容器。所有訊息均儲存在該容器的資料庫中。主題所有的訂閱將儲存在主題所在的同一個容器中。

適用於 Windows Server 的服務匯流排 陣列包含一個或三個節點。各個節點均執行 適用於 Windows Server 的服務匯流排 閘道服務及 適用於 Windows Server 的服務匯流排 代理服務。其中一個代理將載入各個容器。適用於 Windows Server 的服務匯流排 會盡可能在所有代理之間平均散佈容器。如果代理失效,由失效的代理載入的所有容器將移至其他代理。涉及特定實體的所有作業將由載入的容器包含該實體的代理處理。如需詳細資訊,請參閱 適用於 Windows Server 的服務匯流排 架構概觀

效能指南

本節探討為提升輸送量可進行的效能最佳化。

硬體考量

適用於 Windows Server 的服務匯流排 陣列的總輸送量受到三個因素所限制:

  1. 陣列節點的運算能力。

  2. SQL Server 機器的運算能力及硬碟設定。

  3. 陣列節點與 SQL Server 機器之間網路連線的頻寬。

Tip提示
若要達到高輸送量,請針對 SQL Server 資料庫使用專用機器,請勿使用其中一個陣列節點。

如果計劃使用大量佇列及主題,應該規劃多個訊息容器在多個 SQL 伺服器上執行。適用於 Windows Server 的服務匯流排 自動將訊息容器 (資料庫) 指派到陣列節點時,將在建立實體時將 適用於 Windows Server 的服務匯流排 佇列及主題 (包括其中的訊息) 放置到資料庫。

Tip提示
為達到最佳的輸送量,請至少使用與陣列中的節點數同樣多的容器。

Tip提示
對於大量佇列及主題,請規劃數量為陣列節點數三倍的訊息容器 (例如,對於 3 個節點的陣列建立 9 個訊息容器)。

Tip提示
建立 適用於 Windows Server 的服務匯流排 訊息及主題前,建立訊息容器。

SQL Server 最佳化

大多數訊息案例的效能受限於 SQL server I/O。調整代管 適用於 Windows Server 的服務匯流排 容器資料庫的 SQL Server 時,請考量下列幾點。

  • 設定 SQL Server,將記錄及資料儲存於不同的磁碟。

  • 針對寫入效能將 SQL Server 硬碟最佳化。如果伺服器配備足夠的記憶體,SQL Server 很少讀取磁碟的資料。如果伺服器配備兩個以上的磁碟,請標記包含記錄及資料存放區的磁碟。

  • 預先配置記錄和資料檔案所用的空間,並停用自動增長。

  • 設定 SQL Server,使各個處理器核心只有一個 TempDB 資料檔案。

  • 將 NTFS 配置單位大小變更為 64 KB。

啟用重新導向

用戶端預設會將其要求傳送到其中一個 適用於 Windows Server 的服務匯流排 閘道。閘道會將要求轉送到載入的容器包含該實體的代理。如果啟用重新導向功能,用戶端會將重新導向要求傳送到 適用於 Windows Server 的服務匯流排 閘道。閘道將以代理的位址回應。用戶端會將所有要求直接傳送到代理。若要啟用重新導向功能,請將 Factory 的 EnableRedirect 內容設定為 true。例如:

MessagingFactorySettings factorySettings = new MessagingFactorySettings();
factorySettings.NetMessagingTransportSettings.EnableRedirect = true;
MessagingFactory factory = MessagingFactory.Create("address", factorySettings);

請注意,重新導向機制僅適用於透過 TCP 傳送的要求。HTTP 要求一律透過閘道傳送。也請注意,重新導向功能與某些負載平衡器不相容。

增加內部快取的大小

增加快取大小能夠讓 適用於 Windows Server 的服務匯流排 代理處理程序儲存更多的資料在記憶體中。例如,若要將 500 MB 的預設快取大小增加為 1 GB,請在其中一個 適用於 Windows Server 的服務匯流排 陣列節點執行下列 PowerShell Cmdlet:

Set-SBRuntimeSetting  -Name messagecachesizeperentity -Value 1048576000
Stop-SBFarm
Start-SBFarm

停用訊息順序

傳送到主題的訊息必須移至所有訂閱。如果 適用於 Windows Server 的服務匯流排 能夠不按順序將訊息移至訂閱,這個處理程序即可加速。如果停用訊息順序,可提升三倍效率。

若要停用主題的訊息順序,請將 TopicDescription 類別的 SupportOrdering 內容設定為 false。例如:

TopicDescription topicDescription = new TopicDescription(topicName)
{
    SupportOrdering = False
};
namespaceManager.CreateTopic(topicDescription);

案例

本節探討對於幾個關鍵案例如何提升效能的建議事項。請注意,確切的輸送量數目會隨著確切的案例及使用的特定功能而有極大的差異。

以高輸送量將單一 (或少量) 實體最佳化

單一佇列或主題會儲存在單一容器中,這一個容器有單一資料庫,並且由單一代理負責處理。如果使用 TCP 代理程式,則只有其中一個陣列節點作用中;陣列中其他的節點將做為備份節點,以便陣列從節點失效中復原。Get-WFServiceVersionAdd-SBHost

效能評定已指出下列結果:

 

  訊息輸送量 作業數目 (傳送 + 接收)

單一佇列

每秒 20,000 個訊息

每秒 40,000 個訊息

有 1 個訂閱的單一主題

每秒 14,200 個訊息

每秒 28,400 個訊息

有 1000 個訂閱的單一主題

每秒 26 個訊息

每秒 26,000 個訊息

效能評定是以三個節點的陣列及一個專用的 SQL Server 節點進行。測量方式是並行傳送和接收 1 KB 大小的訊息。所有節點均配備四個四核心 CPU (2.3GHz)、24GB RAM 及 1GBit/s 乙太網路。

以高輸送量將多個實體最佳化

三個節點的陣列至少應該有三個容器。最好有九個 (或以上) 的容器,以便在其中一個陣列節點失效時,使陣列節點保持均衡負載。

我們的測試系統能夠處理 1500 個佇列,其中每一個的訊息輸送量 (傳送 + 接收 ) 是每秒 1 個訊息。

另請參閱


建置日期:

2013-07-25
本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見

社群新增項目

新增
Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft. 著作權所有,並保留一切權利。