У меня есть Java-программа, которая будет проверять, изменилось ли значение в базе данных каждую минуту. Если значение изменилось, программа должна выполнить задачу.

Запуск программы из cmd занимает около 7 секунд, когда программа проверяет только значение в базе данных.

Какое лучшее решение? Чтобы планировать программу с помощью планировщика заданий каждую минуту или программа постоянно работает и спит в течение 1 минуты между каждой проверкой? Требует ли планирование ресурсов планировщика заданий?

ОС Windows Server 2008R2.

2 ответа2

0

Когда вы запускаете его по расписанию с помощью планировщика, вы запускаете новый экземпляр программы каждую минуту.
И новая программа должна открывать и закрывать базу данных каждый раз. Это более ресурсоемкий процесс как для сервера, так и для базы данных, чем для программы, которая все время работает и опрашивает (уже открытое) соединение с базой данных раз в минуту, чтобы проверить это.
С другой стороны... Постоянно работающая программа может со временем медленно вытекать из памяти или других ресурсов. И если база данных по какой-то причине переходит в автономный режим / недоступна во время работы программы, она должна быть в состоянии восстановиться после этого. Запланированная программа, очевидно, не должна иметь дело с этим.

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

Так что это действительно зависит от всей окружающей среды. Я не могу дать общую рекомендацию "лучшая практика".

0

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

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

Поэтому вместо этого я настоятельно рекомендую использовать скрипт запуска для активации цикла и выполнять проверку каждую минуту.

Возможно, вы захотите найти другие способы сделать это, и вы можете проверить, не является ли 5-минутный интервал большим компромиссом.

Это значение в базе данных где-то изменяется. Разве этот процесс не может выполнить действие или инициировать сценарий на стороне сервера?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .