Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Idea is to start the following script and, at the same time, run a Visual Studio load test against that same web app. If everything works well, at the exit of the script you should end up with a Visual Studio profile (.vsp) that you can analyze.
It requires Visual Studio 2010 Performance Tools installed.
#
# VSProfile.ps1
# Sample call: .\VSProfile.ps1 -AppPoolName "SharePoint - 80" -ProfileOutputPath C:\Temp\Profile.vsp -ProfileDurationSeconds 120
#
param($AppPoolName, $ProfileOutputPath, $ProfileDurationSeconds)
# set perf tools dir
$env:perftoolsdir = "$env:ProgramFiles (x86)\Microsoft Visual Studio 10.0\Team Tools\Performance Tools\x64"
# enable sampling
& "$env:perftoolsdir\vsperfclrenv" /sampleon
# get PID of the w3wp process to profile
& "$env:windir\System32\inetsrv\appcmd.exe" list wp | %{ if($_ -match "WP `"(?<pid>\d+).*(applicationPool:$AppPoolName)") { $w3wpid = [System.Int32]::Parse($matches["pid"]) } }
write-host "Will profile process ID $w3wpid"
# attach to that process
& "$env:perftoolsdir\vsperfcmd" /crosssession /start:sample /attach:$w3wpid /output:$ProfileOutputPath
# wait
[System.Threading.Thread]::Sleep([System.Int32]::Parse($ProfileDurationSeconds)*1000)
# detach
& "$env:perftoolsdir\vsperfcmd" /detach:$w3wpid
& "$env:perftoolsdir\vsperfcmd" /shutdown:5
# wait for vsp file to get totally flushed
[System.Threading.Thread]::Sleep(20000)