Оптимизация нагрузки при использовании
Quartz
Продвинутый
Данный материал предназначен для продвинутых пользователей. Если у вас есть вопросы по применению, обратитесь в Техническую поддержку BPMSoft.
Симптомы
Quartz создает большую нагрузку на базу данных.
Решение
- Для решения проблемы в первую очередь рекомендуется создать пользовательские планировщики, чтобы распределить нагрузку между ними.
- После чего выполнить перенос таблиц, работающих с Quartz, в отдельную таблицу в рамках одной базы данных.
- Если существуют ограничения в ресурсах основной базы данных, рекомендуется выполнить перенос таблиц, работающих с Quartz, в отдельную базу данных.
Это дает следующие преимущества:
- Изоляцию блокировок: каждый планировщик работает со своими данными;
- Повышение производительности: каждый планировщик сканирует только свои записи;
- Безопасность: очистка одного планировщика не влияет на другие.
Перенос таблицы Quartz в рамках одной базы данных
Для перевода планировщика на другие таблицы в рамках одной базы данных выполните следующие шаги:
- Создайте новые таблицы для Quartz по аналогии с существующими (начинаются с qrtz_), но с собственным префиксом (например, custom_qrtz_: custom_qrtz_triggers и т. д.).
- В блоке quartz для конкретного планировщика добавьте настройку для указания префикса таблицы:
<add key="quartz.jobStore.tablePrefix" value="custom_qrtz_" />
Перенос таблицы Quartz в отдельную базу данных
Для переноса таблицы выполните следующие шаги:
- В файле ConnectionStrings.config добавьте новую строку с названием, например, quartzDb:
<add name="quartzDb" connectionString="Server=..."/>
- В конфигурационном файле Web.config, который лежит в корневом каталоге приложения, в секции quartz, укажите новое название в параметре quartz.dataSource.SchedulerDb.connectionStringName:
<add key="quartz.dataSource.SchedulerDb.connectionStringName" value="quartzDb" />
Примечание. Значение параметра должно полностью совпадать с именем атрибута, заданному в шаге 1.
- Изменения нужно внести на всех экземплярах, чтобы сохранить кластерный режим.
- В базе данных, куда вы планируете перенаправить Quartz, должна быть идентичная основному приложению структура таблиц.
- Чтобы сохранить запланированные задания, необходимо заполнить таблицы данными.
Если потребуется перенос данных, рекомендуется следующий план действий:
- Остановите сайт и пул приложения BPMSoft.
- Создайте новую базу данных для Quartz и перенести туда структуру и данные (можно просто скопировать основную базу данных сайта).
- Внесите изменения в файлы ConnectionStrings.config и Web.config сайта.
- Запустите сайт и пул приложения BPMSoft. Проверьте, что плановые задания выполняются корректно.
Если планировщик не запускается с первого раза и в логах нет ошибок, попробуйте перезайти под пользователем Supervisor:
- Войдите в систему под пользователем Supervisor.
- Нажмите кнопку «Выход».
- Повторно войдите в систему под пользователем Supervisor.
Рекомендуем изучить
Диагностика и решение проблем планировщика Quartz
Создание пользовательского планировщика Quartz
Материал был полезен для вас?