Диагностика высокой загрузки ЦП в, казалось бы, неактивной сессии

374
Alex KeySmith

Я обнаружил, что Powershell использует 20% процессорного времени после запуска нескольких скриптов.

Сценарий состоит из набора модулей AzureRM, модулей posh-git и vssetup и набора пользовательских модулей (ни один из которых не должен иметь циклов - если только не будет ошибки).

Подозревая, что один из модулей находится в бесконечном цикле, я выгружал каждый модуль. Однако, разгрузив все модули, процессор все еще высок.

Используя procmonя могу видеть:

GetMetaDataPublicInterfaceFromInternal в темах.

Любые предложения на следующем шаге, чтобы диагностировать, почему высокая загрузка процессора все еще происходит?

Похоже, это не происходит на новом сеансе PowerShell (с posh-gitзагруженным).

0
Вы можете начать с отладки с помощью Set-PSDebug -Trace 1. root 6 лет назад 0
Спасибо @root, в теории у меня нет сценариев для отладки, так как сценарии уже завершены (теоретически). Если Set-PSDebug не делает другие вещи (я не использовал это много), просто отладка в ISE? Alex KeySmith 6 лет назад 0
Теперь я вижу, что все, что я запускаю с Set-PSDebug, выводится на консоль, спасибо за подсказку. Alex KeySmith 6 лет назад 0
Я задавался вопросом, был ли это сценарий с фоновой работой, но Get-Job ничего не показывает. Также Get-ScheduledTask (а затем и остановка всего) тоже не помогает. Alex KeySmith 6 лет назад 0
Трудно сказать, не прочесывая каждый сценарий. Использование `Set-PSDebug` может быть полезно при следующем запуске сценариев. Если у вас бесконечный цикл, это будет очевидно при взгляде на консоль с включенной отладкой. В противном случае вы правы попробовать procmon. root 6 лет назад 0

0 ответов на вопрос