下圖就是經過VSInstr處理后,反編譯后的代碼:
可以看到VSInstr程序修改了原來的DLL。在檢測模式下,只有經過修改后的DLL才能收集到數據。
在VSTS中,一般可以通過Analyze菜單下的Launch Performance Wizard來新建一個性能會話,然后進行性能數據的采集。
對于ASP.NET程序,可以通過以下步驟來進行“采樣”
iisreset /stop
VSPerfClrEnv /globalsampleon
VSPerfCmd /start:sample /user:”NETWORK SERVICE” /output:”d:\somewhere\xxxx.vsp”
VSPerfCmd /globaloff
iisreset /start
VSPerfCmd /attach:xxxx
VSPerfCmd /globalon–run the test scenario–
VSPerfCmd /globaloff
VSPerfCmd /detach
iisreset /stop
VSPerfCmd /shutdown
- 第一步是停掉IIS
- 然后通過VSPerfClrEnv對環境變量進行設置,具體可以查文檔,做完這一步以后通常需要重啟一下電腦
- 第三步就是通過VSPerfCmd啟動性能數據收集
- 接下來的VSPerfCmd /globaloff就是暫停性能數據的收集
- 然后重啟IIS,并且訪問一下這個服務器上的頁面,使得W3WP進程啟動
- 查看W3WP.EXE的進程ID,然后通過VSPerfCmd /attach:xxxx把Profiler attach到IIS中
- 通過VSPerfCmd /globalon重新讓Profiler進行性能數據的采集
- 然后就可以運行性能測試的場景
- 運行測試完畢以后就用VSPerfCmd /globaloff停止性能數據的采集
- 接著用VSPerfCmd /detach讓Profiler不要附著在IIS上
- 停掉IIS — iisreset /stop
- 執行VSPerfCmd /shutdown,這一步執行完畢以后,在d:\somewhere\下就有一個xxxx.vsp的性能報告。
對于ASP.NET程序,可以通過以下步驟來進行“檢測”
檢測和采樣其實是大同小異的,但是有一個關鍵的步驟就是在進行檢測之前,一定要記得用VSInstr命令對需要進行檢測的DLL或者EXE文件進行處理,建議一次不要檢測太多文件,檢測時間不要太長,因為檢測所產生的數量是非常大的,產生的文件大小都是按G級別計算了。
iisreset /stop
VSPerfClrEnv /globaltraceon
VSPerfCmd /start:trace /user:”NETWORK SERVICE” /CS /output:”d:\xxx\0422.vsp”
VSPerfCmd /globaloff
iisreset /start
– 預熱 –
VSPerfCmd /globalon–run code–
VSPerfCmd /globaloff
iisreset /stop
VSPerfCmd /shutdown
重復一次,在做以上的步驟之前必須要用VSInstr對目標二進制文件進行處理。這里詳細步驟就不做解釋了,命令的主要區別就是在做檢測的時候,就免去了Attach到IIS這個步驟了。
采樣和檢測,前者是宏觀的性能數據采集,后者是微觀的性能數據采集。對于CPU負載較高的程序,用采樣會得到比較好的效果;但是如果程序運行過程中并沒有消耗很多的CPU資源,那么用采樣可能就不能收集到太多有用的信息。所以在不同的場景下需要應用不同的性能數據收集方法。
文章來源于領測軟件測試網 http://www.kjueaiud.com/