新钛云服已累计为您分享807技术干货
想知道你的Windows Server上的IIS网站现在有多少用户在线吗?这个信息超级有用,它不仅能帮你预测服务器的负载,还能帮你选个好时机进行网站维护和更新。想知道怎么做吗?跟我来!
01
用性能监视器查看用户会话数
Windows性能监视器是个宝藏工具,它能帮你监控IIS站点的活跃用户会话数。首先,打开性能监视器控制台,然后找到“性能监视器”部分。
添加性能计数器
默认情况下,你可能看到CPU使用率的计数器,但我们现在要关注的是IIS的用户会话数。点击工具栏上的绿色按钮,或者按Ctrl+N,就能添加新的计数器了。
选择Web服务组的计数器
在计数器列表中,找到并展开“Web服务”组。这里有三个重要的计数器:
当前匿名用户: 显示匿名IIS用户的数量。
当前非匿名用户: 显示已授权的IIS用户数量。
当前连接:显示IIS服务器上活动连接的总数。
添加并查看计数器
选择你需要的计数器,然后在实例中选择一个或多个IIS网站。点击“添加>>”按钮,计数器就会出现在右侧窗格中了。
以相同的方式添加所有必要的计数器,然后单击“确定”。
使用Performance Manager监控用户会话数
现在,Performance Manager控制台会实时显示用户会话数的信息。你可以看到计数器值的线性图,选择任何一个计数器,都能查看它在特定时间段内的最新值、平均值、最小值或最大值。
您可以向此控制台添加自定义性能计数器,并将其保存在单独的视图中,以便快速访问 Web 服务器负载数据。
使用PowerShell访问IIS性能计数器
现在,Performance Manager控制台会实时显示用户会话数的信息。你可以看到计数器值的线性图,选择任何一个计数器,都能查看它在特定时间段内的最新值、平均值、最小值或最大值。
您可以向此控制台添加自定义性能计数器,并将其保存在单独的视图中,以便快速访问 Web 服务器负载数据。
使用PowerShell访问IIS性能计数器
如果你更喜欢用PowerShell,那也没问题。用Get-Counter
命令,你就能获取所有可用的 Web 服务性能计数器的列表。
powershell
(Get-Counter -ListSet 'Web Service').counter
要获取有关 IIS 服务器上当前活动连接数的信息(\Web Service(*)\Current Connections),请使用以下命令:
powershell
Get-Counter -Counter “\\Web Service(*)\\Current Connections”
这个命令会显示IIS服务器的总连接数和每个站点的统计信息。
提示
如果您指定多个计数器的值并用逗号分隔,则可以显示多个计数器的值;
使用–Continuous选项,计数器值的信息将持续显示在控制台中,直到您使用 CTRL+C 中断它。
获取特定IIS站点的活动会话数
如果你只关心某个特定的IIS站点,比如名为Site1的站点,你可以用下面的命令:
powershell
Get-Counter "web service(Site1)\\current connections" -ComputerName web-srv01
您可以指定检查计数器值的服务器的名称。当您在本地检查站点上的连接数时,不允许指定 localhost:
为了不必每次都指定服务器名称,可以使用环境变量COMPUTERNAME:
powershell
Get-Counter "web service(Site1)\current connections" -ComputerName $env:COMPUTERNAME
要获取整个 IIS Web 服务器(IIS 上的总用户数)计数器“当前连接数”的数值,可以使用以下命令:
powershell
((Get-Counter -Counter 'web service(_total)\current connections' -computer $env:COMPUTERNAME) | Select-Object -Expand countersamples).Cookedvalue
02
模拟测试
如果你想自动化这个过程,可以用脚本来获取每个站点的连接数。这里有个简单的脚本示例,它会启动多个浏览器进程来模拟用户会话,然后检查计数器值。
powershell
$counter = 20
for($i=1; $i -le $counter; $i++) {
$SiteAddress = "http://localhost:9666/"
Start-Process $SiteAddress
}
检查当前连接计数器的值并确保它增加。
如果服务器上运行着多个 IIS 站点,并且您需要以表格的形式获取每个站点的连接数,则可以使用此脚本(要将数据从 IIS 接收到 PowerShell,您需要加载 WebAdministration 模块):
powershell
import-module webadministration
function get-CurrentConnection($Site) {
Get-Counter "web service($Site)\current connections,web service($Site)\ Bytes Received/sec,web service($Site)\Bytes Sent/sec" -ComputerName $env:COMPUTERNAME
}
$IISsites = dir IIS:\Sites | Select Name
$CurrentConnection = @()
foreach ($site in $IISsites)
{
Write-Host $site
$ConnCount = New-Object psobject | get-CurrentConnection -Site $site.name
$CurrentConnection += $ConnCount
}
$CurrentConnection|out-gridview
最后,如果你想看所有站点的连接计数器数值(第一个值是与 IIS 的连接总数),可以用这个命令:
powershell
Get-WmiObject -class Win32_PerfRawData_W3SVC_WebService | Select-Object -ExpandProperty CurrentConnections
您可以使用计数器显示有关每个站点或整个 Web 服务器接收/发送的数据量的信息Web service(sitename)\Bytes Sent/sec、Web service(sitename)\Bytes Received/sec 。
这样,你就能轻松掌握IIS网站上的活跃用户会话数了。希望这些信息对你有所帮助!
如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。
参考链接:https://woshub.com/how-to-monitor-active-sessions-on-iis/
推荐阅读
推荐视频