gpt4 book ai didi

performance - 使用 HostName 更好地测试连接性能

转载 作者:行者123 更新时间:2023-12-01 13:51:03 27 4
gpt4 key购买 nike

使用 IP 地址运行 Test-Connection 比使用服务器的主机名运行相同的命令要花费更长的时间。

但是;如果我添加 -quiet 参数,则性能大致相同(如您所料,IP 快一点)。

使用 Measure-Command 这个异常不会出现;大概是输出没有显示的一些怪癖。

下面的代码更准确地反射(reflect)了所看到的异常情况:

$begin=(get-date).ticks;test-connection '123.45.67.89'; $a=((get-date).ticks - $begin)
$begin=(get-date).ticks;test-connection 'MyHostName'; $b=((get-date).ticks - $begin)
$a-$b

同事在自己的机器上重现了同样的问题。

问题:有人知道是什么原因造成的吗?也就是说,我怀疑这是一个错误(并且已经报告过),但这意味着 PowerShell 可能会根据是否显示输出/导致类似量子的效果而以不同的方式工作,这很聪明;所以它不仅仅是按顺序运行给出的命令,而是在幕后进行一些(反)优化。

我的环境

操作系统:MS Windows 7 Pro SP1

$PSVersionInfo:

Name                           Value                                  
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.18444
BuildVersion 6.3.9600.16406
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2

MS 连接错误

https://connect.microsoft.com/PowerShell/feedbackdetail/view/1578010/test-connection-performance-with-ip-and-output

最佳答案

我只是在使用和不使用 Quiet 开关参数运行 Test-Connection 时进行了一次 Wireshark 跟踪,为 Computername 提供了一个 IPv4 地址参数。

当省略 Quiet 开关时,PowerShell 似乎发送的不是 1 个,而是 6 个 NetBIOS 名称查询到目标机器,之后它返回格式化输出。

如果我分配 Test-Connection 的输出,它会立即返回,但只要我将它通过管道传输到 Format-Table , 它挂起并再次发送 NBSTAT 查询


根本原因实际上不是 Test-Connection cmdlet 本身,而是格式化的输出。其中一个属性 (IPV4Address) 是一个 ScriptProperty 并且具有以下定义:

PS C:\> $ping = Test-Connection -ComputerName 10.0.0.101 -Count 1
PS C:\> Get-Member -InputObject $ping -Name IPV4Address | Select-Object -ExpandProperty Definition
System.Object IPV4Address {get=$iphost = [System.Net.Dns]::GetHostEntry($this.address)
$iphost.AddressList | ?{ $_.AddressFamily -eq [System.Net.Sockets.AddressFamily]::InterNetwork } | select -first 1;}

因此,当显示输出时,将调用 [System.Net.Dns]::GetHostEntry(10.0.0.101) 来计算 IPV4Address - 这就是导致等待时间


如果您不关心 IP 地址的实际解析,请使用 Select-Object 来阻止 IPV4Address 的计算和输出:

Test-Connection -ComputerName 10.0.0.101 -Count 1 | Select Address,StatusCode

关于performance - 使用 HostName 更好地测试连接性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569883/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com