Любой, кто запускает задания в планировщике задач Windows, рано или поздно наткнется на необъяснимые различия во времени выполнения. PHP-скрипт, который выполняется за 5 минут в командной строке, внезапно занимает 20 минут при запуске через планировщик задач Windows. Тот же пользователь, те же права, тот же код – время выполнения в четыре раза больше. Что там происходило?
В нерабочее время Отладка, После сеансов мониторинга процессов и бесчисленных сравнений конфигураций решение оказалось поразительно простым: планирование задач Windows по умолчанию устанавливает более низкий приоритет процесса. Значение по умолчанию для задач в планировщике задач: 7 (ниже нормы), не 4-6 (Нормально), как и следовало ожидать. Эта, казалось бы, небольшая разница может привести к огромным потерям производительности в операциях с интенсивным вводом-выводом.
Подробные уровни приоритета Windows ::
| Ценить | Приоритет | Описание |
|---|---|---|
| 0 | В реальном времени | Наивысший приоритет (внимание!) |
| 1 | Высокий | Высокий приоритет |
| 2-3 | Выше нормы | О нормальном |
| 4-6 | Нормальный | Стандарт для интерактивных процессов |
| 7 | Ниже нормы | ПО УМОЛЧАНИЮ в планировщике задач |
| 8-9 | Ниже нормы | Еще ниже |
| 10 | Праздный | Самый низкий приоритет |
Проблема с приоритетами в планировании задач многогранна: при экспорте задачи и просмотре XML-файла часто обнаруживается следующее: нет Установка приоритета. После этого Windows будет автоматически использовать значение по умолчанию. 7. Графический интерфейс отображает это значение во время экспорта, но оно не сохраняется явно в задаче. Низкий приоритет не только приводит к уменьшению процессорного времени, но и:
- Регулируемые дисковые операции ввода-вывода
- Более низкий сетевой приоритет
- Плохое кэширование файловой системы
- Задержки в доступе к базе данных
Даже если вы используете того же пользователя и включите «Запустить с наивысшими привилегиями», задача выполняется в другой среде Windows Station/Desktop с другими приоритетами. Чтобы определить проблему, вы можете использовать PowerShell для составления списка всех задач с указанием их фактических приоритетов.:
38b7fa6c77dc344401485cd338ea4128
Почти все мои задачи выполнялись с приоритетом 7. Теперь мы целенаправленно корректируем приоритет нескольких задач одновременно.:
38b7fa6c77dc344401485cd338ea4128
После установки приоритета 4 Мой PHP-скрипт снова запустился (обычно) через ожидаемые 300 секунд. Если вы настроили задачи с определенной учетной записью пользователя, вы можете просто ввести это в строке 10 следующим образом::
38b7fa6c77dc344401485cd338ea4128