打开网易新闻 查看精彩图片

新钛云服已累计为您分享807技术干货

想知道你的Windows Server上的IIS网站现在有多少用户在线吗?这个信息超级有用,它不仅能帮你预测服务器的负载,还能帮你选个好时机进行网站维护和更新。想知道怎么做吗?跟我来!

01

用性能监视器查看用户会话数

Windows性能监视器是个宝藏工具,它能帮你监控IIS站点的活跃用户会话数。首先,打开性能监视器控制台,然后找到“性能监视器”部分。

添加性能计数器

默认情况下,你可能看到CPU使用率的计数器,但我们现在要关注的是IIS的用户会话数。点击工具栏上的绿色按钮,或者按Ctrl+N,就能添加新的计数器了。

选择Web服务组的计数器

在计数器列表中,找到并展开“Web服务”组。这里有三个重要的计数器:

  • 当前匿名用户:显示匿名IIS用户的数量。

  • 当前非匿名用户:显示已授权的IIS用户数量。

  • 当前连接:显示IIS服务器上活动连接的总数。

添加并查看计数器

选择你需要的计数器,然后在实例中选择一个或多个IIS网站。点击“添加>>”按钮,计数器就会出现在右侧窗格中了。

>”按钮,计数器就会出现在右侧窗格中了。"},"attribs":{"0":"*0+1j"}},"apool":{"numToAttrib":{"0":["author","7262173446648594434"]},"nextNum":1}},"type":"text","referenceRecordMap":{},"extra":{"channel":"saas","pasteRandomId":"c2bb715a-ee30-489e-a43e-32ce21d4a0cd","mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":11,"type":"text","selection":{"start":10,"end":65},"recordId":"XtkadSgE3oCSuFxu9vcc8XT1nnb"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text">

以相同的方式添加所有必要的计数器,然后单击“确定”。

使用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/