譯者前言
本文翻譯自<Visual Studio Performance Testing Quick Reference Guide 3.6> 有關於IP Switching的章節。<Visual Studio Performance Testing Quick Reference Guide>的最新版本可以從這里下載
IP地址切換 – 工作機制解析
每個代理(譯者:指使用Visual Studio進行Load Test時,開啟controller-agent模式下的agent)可分配最多達256個IP地址以供使用。測試開始時,代理服務在網卡上配置IP地址。測試運行時,新的連接循環地使用IP地址池中的地址。
IP Switching最常見的用途是針對負載均衡器。負載均衡器通常根據IP地址,將請求路由到服務器集群中某個特定的Web服務器。所以,如果你有2個代理把負載加載到3台Web服務器,因為所有的流量是來自兩個IP地址(每個代理一個IP),那么只有兩個Web服務器將得到所有流量。 IP Switching提供了一種方法,使同一個代理能夠產生來自多個IP地址的流量,使負載均衡器能夠在整個集群中平衡負載。
VSTT目前限制每個代理可以產生256個獨立的IP地址。在大多數測試的情況下,這是足夠多的地址。這種限制最可能會影響你的情況是,如果你正在運行的大型測試中,每一個用戶必須擁有一個獨立的IP地址,用於關聯到諸如某種會話狀態上。但這種情況並不常見。
在VS 2008中,沒有辦法有一個給定的虛擬用戶使用相同的IP地址。即當IP switching開啟時,如果一個給定的用戶會多次從IP池中獲取IP,那么隨后的迭代中,可能會使用不同的IP地址。
在VS 2010中,Web測試引擎設法確保相同的用戶將總是使用相同的IP地址,但不能保證一定能夠如此。
如果想給每一個用戶分配唯一的IP地址,最大的問題是,目前的IP Switching限制每個代理最多只能有256個IP地址,這意味着你也被限制每個代理最多只能有256個虛擬用戶。一種解決方案是在一台物理機器上使用多個虛擬機來獲取多個代理。
IP地址切換只能用於Web Tests
IP Switching功能不能用於單元測試。
用於IP切換的地址並不是永久設置的
當您選擇在負載測試時,在每個代理機使用多個IP地址(稱為IP地址轉換或IP欺騙),大多數測試工具會要求你往機器的的網卡中添加這些IP地址,並且它們需要總是可用,並始終顯示的機器上的。 VS允許您將一系列的IP地址直接設置在測試項目中。 然后當測試開始運行時,VS動態將這些地址添加到代理中;測試結束時從代理刪除它們。如果您需要使用IP Swtching,設置使用控制器/代理機制是必需的。
如何設置IP Switching
IP Switching有兩個部分需要設置。首先,你必須為Test Rig的代理設置IP Switching,然后你必須告訴Load Test自己,它應該開啟IP Switching。以下步驟:
設置代理
1, 打開Test Rig管理對話框(Test-> Administer Test Controller) (譯者:VS2012中 Load Test –> Manage Test Controllers)
2, 選中每個代理並且點擊“Properties”
3,在對話框中填寫正確信息(如下圖中所示)
此處配置代理屬性
設置Load Test
一旦Test Rig設置完成,你可以配置通過為Load Test配置正確的屬性,來配置那個Load Test將實際使用IP Switching:
此處為Load Test啟用IP Switching(在配置代理之后)
IP Switching功能Troubleshooting
1)確保在代理機器上,代理服務以管理員身份運行;這是必須的,因為代理服務會試圖根據代理屬性中的設置,將這些IP地址配置在指定的網卡上。而這么做是需要管理員權限的。
2)確保為代理服務器配置的所有IP地址中,沒有任何一個已經被直接配置在指定的網卡上了。
3) 為代理服務啟動verbose級別日志:
*編輯文件QTAgentService.exe.config: (位置:<Program Files>\Microsoft Visual Studio 9.0 Team Test Load Agent\LoadTest\QTAgentService.exe.config)
*修改 <add key="CreateTraceListener" value="no"/> 為 "yes"
*修改 <add name="EqtTraceLevel" value="3" /> 為 "4"
*重啟Load Test代理服務
* 文件"VSTTAgent.log"將被創建在和QTAgentService.exe.config同一目錄
*在日志配置為verbose的情況下重新運行load test, 在日志文件中查找包含這樣文本的行:"Attempting to configure IP address:" , "Configured IP address:" . 它告訴你代理服務是否試圖把IP地址配置為你所指定的. 如果你看到 "Configured IP address:" 行, 那么ip地址被成功指定了. 如果沒有,那么應該有錯誤被日志記錄.
如果你已經驗證了以上步驟1&2沒有問題,並且日志指示還是有IP地址配置失敗,但是你沒辦法通過日志消息決定失敗的原因(或者干脆就沒有錯誤日志)。那么,在WebandLoad testing論壇遞交一個新的主題,或者遞交給微軟的技術支持來獲取更多幫助,在報告中提供你設置環境的有關細節,包括相關部分的日志文件。
4)確保你運行的load test啟動了IP Switching:在load test編輯器上點擊每個"Scenario"節點, 在屬性窗口中,驗證"IP Switching"屬性被設置為True(一般來說默認設置為True,但是值得檢查一下)
5)為代理進程開啟verbose級別日志
如果步驟3中所創建的日志顯示IP地址被成功配置,那么下一步就是檢查代理進程日志來驗證load test確實使用這些IP地址來發送請求.
為代理進程啟動verbose級別日志:
*編輯文件QTAgent.exe.config (位置<Program Files>\Microsoft Visual Studio 9.0 Team Test Load Agent\LoadTest\QTAgent.exe.config)
*修改: <add key="CreateTraceListener" value="no"/> 為 "yes"
*修改 <add name="EqtTraceLevel" value="3" /> 為 "4"
* 文件"VSTTAgentProcess.log"將被創建在和QTAgent.exe.config同一目錄
* 重新運行load test, 查找日志文件中類似的行:"Bound request on connection group M to IP address NNN.NNN.NNN.NNN", 如果verbose級別日志開啟並且這樣的行出現在日志文件中,IP Switching應該正常工作了。
6) 如果在步驟5中日志所顯示的獨立的IP地址的數量要少於所配置的數量,那么應該是因為你的load test被配置為連接池的連接數小於配置的IP地址數。如果是這樣,你可以增加連接池的大小,或者切換到"Connection per User" 模式,在load test的"run settings"屬性中設置.
本文由Binhua Liu原創翻譯



