使用 Distributed Replay 來測試你的 SQL Server(下)

by adonisy 23. 四月 2019 23:51

者:楊先民

審 稿:張智凱 

 

按照上一篇文章中的說明配置Distributed Replay之後,我們可以使用Distributed Replay環境在SQL Server上創建負載。

 

從來源伺服器進行資料收集

我們需要從主生產服務器收集一些數據,然後我們可以使用收集的數據在新的SQL Server上創建負載。為此,請按照以下步驟操作。


在控制器上創建“C:\ DRDemo”文件夾(在我們的測試中是ServerN1)。

在ServerN1上打開SQL Server 2012 Profiler跟踪實用程序

選擇文件 - >新建跟踪 - >連接到ServerN1。請注意,我們使用ServerN1來模擬此測試的工作負載。在現實世界中,我們將從當前正在生產的服務器捕獲跟踪。

在“使用模板”下拉菜單中選擇TSQL  - 重播模板並運行跟踪。

運行“C:\ DRDemo \ StartWorkload.cmd”以為SQL Server 2008 R2系統帶來一些負載。系統不是生產系統,因此腳本用於在生產中創建一些負載。

腳本完成後,將跟踪文件保存在“C:\ DRDemo”中。例如,它是“C:\ DRDemo \ ServerN1_SQL2008R2_Trace.trc”。

 

現在來自源服務器的跟踪已準備就緒。

預先處理來源追蹤檔

來源追踪文件將用於準備分佈式客戶端用於在新SQL Server上創建負載的文件。使用控制器(ServerN1)上的命令提示符運行以下命令,為分佈式客戶端準備文件。

c:\DRDemo>dreplay preprocess -i "C:\DRDemo\ServerN1_SQL2008R2_Trace.trc" -d "C:\DRPreProcess"

 

上面的屏幕截圖顯示發生了錯誤。重要的部分是“......並且控制台用戶具有訪問控制器服務的適當權限”

登錄帳戶是服務器上的sqladmin。可以使用ServerN1上的命令提示符使用“whoamI”命令進行檢查。 ServerN1上的系統事件日誌說明了這一點

Description: 
The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID {6DF8CB71-153B-4C66-8FC4-E59301B8011B} and APPID {961AD749-64E9-4BD5-BCC8-ECE8BA0E241F} to the user AYSQLTEST\sqladmin SID (S-1-5-21-2826735731-136765897-3671058344-1125) from address LocalHost (Using LRPC). This security permission can be modified using the Component Services administrative tool.

要解決此問題,我們需要在ServerN1上執行以下步驟:

ServerN1  - 運行並輸入dcomcnfg,並打開組件服務。

查找DReplayController(控制台根目錄 - >組件服務 - >計算機 - >我的電腦 - > DCOM配置 - > DReplayController)

打開DReplayController的屬性,然後選擇“安全”選項卡

編輯“啟動和激活權限”並授予“sqladmin”域用戶帳戶“本地激活”和“遠程激活”權限。

編輯“訪問權限”並授予“sqladmin”域用戶帳戶“本地訪問”和“遠程訪問”。

重啟下面的控制器和客戶端服務

NET STOP“SQL Server分佈式重播控制器”

NET STOP“SQL Server分佈式重播客戶端”

NET START“SQL Server分佈式重播控制器”

NET START“SQL Server分佈式重播客戶端”

 

再次運行該命令:

dreplay preprocess -i "C:\DRDemo\ServerN1_SQL2008R2_Trace.trc" -d "C:\DRPreProcess"

 

 

順便說一句,這些步驟似乎很熟悉 - 我們在服務帳戶本身的第一篇文章中使用過它們。修復權限問題後,preprocess命令在“C:\ DRPreProcess”文件夾中生成2個文件,如下所示。

使用客戶端重播SQL Server 2012

預處理階段已完成。控制器將採取2個文件“ReplayEvents.irf”,“TraceStats.xml”,並將其複製到客戶端(ServerN1,ServerN3)和重放他們針對目標服務器的客戶端是SQL Server 2012中稱為ServerN2 \ SQL2012。這是執行此操作的命令:

dreplay重放-s ServerN2 \ sql2012rc0 -w ServerN1,ServerN3 -f 10 -o -d“C:\ DRPreProcess”

-o參數將跟踪輸出保存在“C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ Tools \ DReplayClient \ ResultDir”中

同時打開一個探查器跟踪並連接到目標服務器,即ServerN2 \ SQL2012 collect profiler trace。然後,您可以比較源服務器的跟踪文件和目標服務器的跟踪文件,並檢查一些查詢性能。您可以參考這篇文章了解更多詳情。

而已!希望我們已經介紹了分佈式重放的基礎知識,以及如何使用它來重現測試系統上的工作負載。

Tags:

不允許評論

NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List