• 轻松获取IIS网站上活跃用户会话数

    想知道你的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网站上的活跃用户会话数了。希望这些信息对你有所帮助!

    如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

    «
    »
以专业成就每一位客户,让企业IT只为效果和安全买单

以专业成就每一位客户,让企业IT只为效果和安全买单