共用方式為


Power BI 報表伺服器容量規劃指引

Power BI 報表伺服器是一款自助式的商業智慧與企業報告解決方案,客戶可在其內部、防火牆後方部署。 它結合了 Power BI Desktop 的互動式報表功能與 SQL Server Reporting Services 的本地伺服器平台。 隨著企業內部分析與報告的廣泛且日益普及,預算硬體基礎架構與軟體授權以擴展至企業用戶群可能是一項挑戰。 本文旨在提供 Power BI 報表伺服器容量規劃的相關指引,文中並共用對報表伺服器的各種工作負載所執行的多項負載測試結果。 雖然組織的報告、查詢與使用模式差異甚大,但本文呈現的結果,連同實際使用的測試與執行方式的詳細說明,成為部署 Power BI 報告伺服器早期規劃者的參考依據。

摘要

我們針對 Power BI Report Server 執行了兩種不同類型的工作負載;每個工作負載包含渲染不同類型的報告以及執行各種網頁入口網站操作。

  • 在「Power BI 報告重度」工作負載中,最常執行的操作(即執行時間約 60%)是渲染 Power BI 報告。
  • 在「分頁報告繁重」工作負載中,最常執行的操作是製作分頁報告。

在 Power BI 報表伺服器的四伺服器拓撲架構下,且預期同時存取報告伺服器的使用者不超過5%,下表描述了 Power BI 報表伺服器在至少 99% 可靠度下可處理的最大使用者數量。

工作負載 8 核心/32 GB 記憶體 16核心/64GB 記憶體
Power BI 報告負荷高 (>60%) 1,000 名用戶 3,000 名使用者
分頁(RDL)報告負荷(>60%) 2,000 名使用者 3,200 名使用者

在每次執行中,CPU 是負載最重的資源。 因此,增加 Power BI 報表伺服器的核心數量,將比增加記憶體或硬碟空間帶來更高的系統可靠性提升。

測試方法

所採用的測試拓撲基於 Microsoft Azure 虛擬機,而非廠商專屬的實體硬體。 所有機器皆設於美國地區。 這反映了硬體虛擬化在本地與公有雲的普遍趨勢。

Power BI 報表伺服器拓撲

Power BI 報告伺服器的部署包含以下虛擬機:

  • Active Directory 網域控制器:SQL Server 資料庫引擎、SQL Server Analysis Services 及 Power BI 報告伺服器需要此功能,以安全驗證所有請求。
  • SQL Server 資料庫引擎與 SQL Server Analysis Services:這是我們存放所有資料庫,供報表渲染時使用。
  • Power BI 報表伺服器
  • Power BI 報表伺服器資料庫。 報告伺服器資料庫託管於與 Power BI 報告伺服器不同的機器上,因此不必與 SQL Server 資料庫引擎在記憶體、CPU、網路及磁碟資源上競爭。

截圖顯示 Power BI 報表伺服器、Active Directory 及相關資料庫之間關係圖。

請參閱附錄 1.1 Power BI 報表伺服器拓撲及附錄 1.2 Power BI 報表伺服器虛擬機配置,以了解該拓撲中所用虛擬機的完整配置。

測試

負載測試中使用的測試已公開於一個名為 Reporting Services LoadTest 的 GitHub 專案中。 此工具讓使用者能研究 SQL Server 報表服務與 Power BI 報表伺服器的效能、可靠性、可擴展性及可復原性特性。 本專案包含四組測試案例:

  • 模擬渲染 Power BI 報告的測試,
  • 模擬渲染行動報告的測試,
  • 模擬生成從小到大分頁報告的測試,
  • 模擬執行各種網頁入口網站操作的測試。

所有測試皆為執行端對端操作(例如渲染報告、建立新資料來源等)而撰寫。 他們透過向報告伺服器發送一個或多個網頁請求(透過 API)來達成此目標。 在現實世界中,使用者可能需要執行幾個中間操作來完成這些端對端操作之一。 例如,要渲染報告,使用者需要前往網頁入口網站,導航到報告所在的資料夾,然後點擊報告來渲染。 雖然測試無法執行完成端到端任務所需的所有操作,但它們仍會承擔 Power BI 報告伺服器將面臨的大部分負擔。 你可以透過探索 GitHub 專案,了解更多關於不同類型報告以及執行的各種操作。

備註

該工具並非 Microsoft 官方支援,但產品團隊確實會參與專案並解答其他貢獻者提出的問題。

Workloads

測試中使用兩種工作負載設定檔:Power BI Report Heavy 和 Paginated Report Heavy。 下表描述了對報表伺服器執行的請求分布情況。

Activity Power BI 報告負荷大,發生頻率 分頁報告量大,出現頻率
渲染 Power BI 報告 60% 10%
渲染分頁(RDL)報告 30% 60%
渲染行動報表 5% 20%
網頁入口網站運作 5% 10%

使用者負載

每次測試執行時,測試依據兩個工作負載中指定的頻率執行。 測試開始時,對報告伺服器同時有 20 個用戶請求。 使用者負載隨後逐步增加,直到可靠性降至99% 目標以下。

Results

同時使用者容量

如前所述,測試開始時有 20 位同時使用者向報告伺服器提出請求。 同時使用用戶數量逐漸增加,直到有 1% 請求失敗。 下表結果告訴我們,伺服器在最高負載下,在故障率低於 1%時,能處理的同時使用者請求數量。

工作負載 8核心/32GB 16 核心/64 GB
Power BI 報告重度 50 位同時使用用戶 150 名同時使用者
分頁報告負載繁重 100 名同時使用者 160 名同時使用者

總用戶容量

在 Microsoft,我們有一個供多個團隊使用的 Power BI Report Server 生產部署。 當我們分析該環境的實際使用時,發現任何時刻(即使在每日高峰負載期間)同時使用用戶數通常不會超過總用戶基數的 5%。 以這個 5% 的並發比率作為基準,我們推算出 Power BI 報告伺服器能以 99% 的可靠性處理的總用戶數。

工作負載 8核心/32GB 16 核心/64 GB
Power BI 報告重度 1,000 名用戶 3,000 名使用者
分頁報告負載繁重 2,000 名使用者 3,200 名使用者

總結

每次負載測試時,CPU 是 Power BI 報表伺服器機器在高峰負載時負擔最重的資源。 因此,首先應該增加的資源是核心數量。 或者,你也可以考慮在系統結構中增加更多的 Power BI 報告伺服器來擴展規模。

本文所呈現的結果,是透過執行特定的報告,使用特定的資料,並以特定的方式重複進行得出的。 這是一個有用的參考點,但請記得你的使用情況會取決於你的報告、查詢、使用模式以及 Power BI 報表伺服器的部署情況。

附錄

1 拓撲結構

1.1 Power BI 報表伺服器拓撲

為了專注於不同配置下的 Power BI 報表伺服器行為,針對每種機器(除了承載 Power BI 報表伺服器的機器)的虛擬機設定進行了修正。 每台機器皆依據第二代(v2)D 系列機器配備高級儲存磁碟進行配置。 您可以在 「通用用途」區塊找到每個虛擬機大小的詳細資訊。

虛擬機類型 處理器 Memory Azure 虛擬機器大小
Active Directory 網域控制器 2 核心 7 GB Standard_DS2_v2
SQL Server 資料庫引擎與分析服務 16 個核心 56 GB Standard_DS5_v2
報表伺服器資料庫 16 個核心 56 GB Standard_DS5_v2

1.2 Power BI 報告伺服器虛擬機配置

虛擬機承載 Power BI 報表伺服器時,處理器與記憶體配置各異。 與其他虛擬機不同,此機依據第三代(v3)D 系列機器配置,配備高級儲存磁碟。 您可以在「通用用途」區塊找到關於此虛擬機大小的詳細資訊

虛擬機器 處理器 Memory Azure 虛擬機器大小
Power BI 報表伺服器(小型) 8 核心 32 GB Standard_D8S_v3
Power BI 報表伺服器(大型) 16 個核心 64 GB vStandard_D16S_v3

2 執行負載測試工具

如果您想將報告服務負載測試工具對您或 Microsoft Azure 部署的 Power BI Report Server 執行,請依照以下步驟操作。

  1. 從 GitHub 複製 Reporting Services LoadTest 專案 (https://github.com/Microsoft/Reporting-Services-LoadTest)。
  2. 在專案目錄中,你會找到一個名為 RSLoadTests.sln 的解決方案檔案。 請在 Visual Studio 2015 或更新版本中開啟此檔案。
  3. 請決定是否要在您的 Power BI 報表伺服器部署中運行此工具,或在 Microsoft Azure 中的 Power BI 報表伺服器部署中運行。 如果你要用它來對照自己的部署,請進入第 5 步。
  4. 請依照上述 https://github.com/Microsoft/Reporting-Services-LoadTest#create-a-sql-server-reporting-services-load-environment-in-azure 指示在 Azure 中建立 Power BI 報表伺服器環境。
  5. 完成環境部署後,依照說明 https://github.com/Microsoft/Reporting-Services-LoadTest#load-test-execution 執行測試。

其他問題嗎? 試著向 Power BI 社群提問