Ad Widget

Collapse

Время выполнения powershell скрипта

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • bofh
    Junior Member
    • Apr 2019
    • 12

    #1

    Время выполнения powershell скрипта

    Добрый день.

    Может кто сталкивался, есть powershell скрипт возвращающий некие параметры, он прикручен к zabbix. Если я запускаю его локально, то время выполнения 0,5-1 секунда примерно. Если же он выполняется из zabbix агента, то помимо того, что это долго (от 5 до 25 секунд), он еще и процессор загружает. На пропускную способность сети грешить не могу, между ними 10Гбит, и потом я вижу, что именно процесс powershell висит все это время в диспетчере задач. Пробовал и активного и пассивного агента, ситуация не меняется. На какой то отдельно взятый powershell скрипт тоже не могу грешить, потому что у меня 3 разных скрипта на разных серверах ведут себя одинаково. У меня есть подозрение, что дело в параметрах запуска скрипта. Сейчас они powershell -executionpolicy unrestricted -File ...
    Подскажите куда копать?
  • pushnyakov.s
    Junior Member
    • Apr 2019
    • 3

    #2
    Запускаем так:
    powershell.exe -noprofile -ExecutionPolicy Bypass -file ...

    Comment

    • bofh
      Junior Member
      • Apr 2019
      • 12

      #3
      Пробовал и так тоже. Пробовал -nologo -noprofile -ExecutionPolicy Bypass -file ... Результат одинаков. Я часто вижу в диспетчере задач висящий процесс powershell который есть 12% ресурсов ЦП.

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #4
        Что делает этот скрипт?

        Всегда начинайте с простого скрипта, который содержит цифру 1, например. Это отработает максимально быстро и вернёт назад единицу.

        То, с чем я сталкивался - это проблема с запуском агента, а стало быть и PS-скрипта, из под учётной записи LocalSystem, которая имеет определённые ограничения, что неявным образом будет тормозить выполнение.

        Comment

        • bofh
          Junior Member
          • Apr 2019
          • 12

          #5
          Скрипт запускается от учетной записи локального администратора. Он проверяет наличие файла в определенной папке. Если файл лежит там более 20 минут, то срабатывает триггер. Таких папок около 30. Имя папки передается в качестве параметра скрипту. Поэтому и получается, что почти всегда одна копия скрипта запущена. Zabbix агент тоже запущен от учетной записи локального администратора. Проверяли скрипт с консоли тоже из под этой учетной записи.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Ну... скрипт с единицей пробовали? Я бы ещё поотдавал в STDOUT время начала исполнения и завершения. Это бы несколько локализовало этап, на котором происходит фриз.

            Comment

            • bofh
              Junior Member
              • Apr 2019
              • 12

              #7
              Еще не пробовал. Да и тот скрипт признаться не я писал. Но идею я понял, обязательно попробую либо сегодня либо завтра. По результатам отпишусь.

              Comment

              • bofh
                Junior Member
                • Apr 2019
                • 12

                #8
                Попробовал с самым простым скриптом. Он пишет в текстовый файл время, потом возвращает единицу, потом снова пишет в текстовый файл время. В текстовике разница в секунду.
                А в заббиксе при этом
                zabbix:~# time zabbix_get -s x.x.x.x -k "test"
                1

                real 0m7.974s
                user 0m0.000s
                sys 0m0.000s

                Comment

                • bofh
                  Junior Member
                  • Apr 2019
                  • 12

                  #9
                  Добавлю, основная задержка приходится на начальную стадию, когда в текстовый лог еще ничего не записалось. Создается впечатление, что powershell в этот момент чего то там запускает прежде чем начать выполнять скрипт. А как только в текстовый лог падает первая запись, ответ на сервере zabbix я получаю довольно быстро.

                  Comment

                  • sadman
                    Senior Member
                    • Dec 2010
                    • 1611

                    #10
                    Может какие-нить Касперские/Дефендеры/пр. мешают жить?


                    zabbix_agentd.conf

                    Code:
                    UserParameter=test-e, powershell -NoProfile -ExecutionPolicy "RemoteSigned" -File C:\zabbix\scripts\test.ps1
                    test.ps1

                    Code:
                    [System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US"
                    Get-Date
                    1
                    Get-Date
                    shell output

                    Code:
                    $time zabbix_get -s xxx.xxx.xxx.xxx -k test-e
                    
                    Wednesday, April 17, 2019 4:19:45 PM
                    1
                    Wednesday, April 17, 2019 4:19:45 PM
                    
                    real    0m0.894s
                    user    0m0.000s
                    sys     0m0.000s

                    Comment

                    • bofh
                      Junior Member
                      • Apr 2019
                      • 12

                      #11
                      Практически идентичный скрипт )) Там серверная ОС. Антивируса там нет пока, дефендера тоже. Но тем не менее такой эффект (( Заметил еще один эффект. На серваке запустил Total Commander. Если пускать скрипт из него, то тоже есть задержка. В это время висит синее окно на экране. Если запускать этот скрипт из проводника, то быстро запускается. Может быть есть взаимосвязь.

                      Comment

                      • sadman
                        Senior Member
                        • Dec 2010
                        • 1611

                        #12
                        https://stackoverflow.com/questions/...ith-powershell
                        Например.
                        Ну и ещё пяток причин в гугле есть.

                        Comment

                        • bofh
                          Junior Member
                          • Apr 2019
                          • 12

                          #13
                          Ладно. Идею я понял. К сожалению программирование это не мой конек от слова совсем. Я как мог пытался к решению этой проблемы припахать человека который собственно скрипт писал, но он зараза не хочет. Пока смирюсь и буду периодически ему клевать мозг на эту тему. Если будет какой то результат отпишусь.

                          Comment

                          Working...