아래 Powershell 함수를 작성하여 F5 유닛을 호출했습니다. 각 서버에 대해 반복 실행하고 각 개별 stat를 가져온 다음 SQL SMO 호출을 실행합니다.느린 Powershell 기능. 개선하는 방법?
코드가 정말 느리게 실행되고 나는 SQL 호출을 원인으로 생각하지 않는다고 생각합니다.
어떻게 파워 쉘을 개선 할 수 있습니까?
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()
}
}
으로? 어떤 진술에 대부분 시간이 걸리는지 측정 했습니까? 병목 현상은 PowerShell이 아니라 외부 소스 (SQL Server)가 될 것이라고 생각합니다. – stej
참고로, 성능 분석을 위해'Measure-Command' cmdlet을 사용할 수 있습니다. Stej가 말했듯이, PowerShell은 "느린"것에 대한 잘못입니다. –
감사합니다. Measure-Command cmdlet에 대해 알지 못했습니다. 그것을 사용하여 정확한 원인을 확인할 수 있는지 확인합니다. – Andrew