繁体   English   中英

Powershell功能慢。 怎么提高?

[英]Slow Powershell function. How to Improve?

我已经编写了下面的Powershell函数来调用F5单元。 它为每个服务器循环并获取每个单独的统计信息,然后执行SQL SMO调用。

代码运行非常缓慢,我认为我不赞成将SQL调用作为原因。

如何改进Powershell?

function Print-VServerStats()
{

param($virtual_server);


$VirtualServerStatistics = (Get-F5.iControl).LocalLBVirtualServer.get_statistics( (, $virtual_server) );
$VirtualServerStatisticEntry = $VirtualServerStatistics.statistics[0];
$Statistics = $VirtualServerStatisticEntry.statistics | ? {$_.type -eq "STATISTIC_CLIENT_SIDE_CURRENT_CONNECTIONS" -or
                                                           $_.type -eq "STATISTIC_CLIENT_SIDE_MAXIMUM_CONNECTIONS" -or
                                                           $_.type -eq "STATISTIC_CLIENT_SIDE_TOTAL_CONNECTIONS"};

foreach ($Statistic in $Statistics)
{
  $val = Convert-To64Bit $Statistic.value.high $Statistic.value.low;

  switch ($Statistic.type) {
    "STATISTIC_CLIENT_SIDE_CURRENT_CONNECTIONS" {
     $label = "Current Connections";
    }
     "STATISTIC_CLIENT_SIDE_MAXIMUM_CONNECTIONS" {
     $label = "Max Connections";
    }
      "STATISTIC_CLIENT_SIDE_TOTAL_CONNECTIONS" {
     $label = "Total Connections";
    }
  }
    $profcmd.Parameters["@property"].Value = $SrceName
    $profcmd.Parameters["@propertyDesc"].Value = $label
    $profcmd.Parameters["@ValDim1"].Value = $virtual_server
    $profcmd.Parameters["@value"].Value = $val 
    $profcmd.Parameters["@Timestamp"].Value = $t
    [void]$profcmd.ExecuteNonQuery()
  }
}

我们有一个F5 BigIP,我们已经注意到设备上的UI 确实非常慢 我们尚未找到原因,但很有可能是您的延迟是由F5设备本身提供的。 测量命令

$VirtualServerStatistics = (Get-F5.iControl).LocalLBVirtualServer.get_statistics( (, $virtual_server) );

如果是这样,应该显示它。

没有F5很难测试,但是也许您可以通过替换以下代码来缩短/改进代码:

$Statistics = $VirtualServerStatisticEntry.statistics | ? {$_.type -eq "STATISTIC_CLIENT_SIDE_CURRENT_CONNECTIONS" -or
                                                           $_.type -eq "STATISTIC_CLIENT_SIDE_MAXIMUM_CONNECTIONS" -or
                                                           $_.type -eq "STATISTIC_CLIENT_SIDE_TOTAL_CONNECTIONS"};

 $Statistics = $VirtualServerStatisticEntry.statistics | ? {$_.type -match '^STATISTIC_CLIENT_SIDE_(CURRENT|MAXIMUM|TOTAL)_CONNECTIONS?' }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM