Об агентах по расписанию

Тема в разделе "Lotus - Программирование", создана пользователем Eugenus, 21 дек 2010.

  1. Eugenus

    Eugenus Гость

    Привет всем! Кто силен в теории, подскажите, как ведет себя Domino случае периодического запуска агента, который не успевает отрабатывать ко времени повторного запуска ? Ставит в очередь и дожидается отработки либо запускает сразу агент в отдельном потоке ?
    У меня есть кусок кода, который принудительно запускает агент через каждые 30 секунд, который далеко не всегда успевает отработать за этот интервал, при этом нагрузка на сервер вроде бы остается постоянной и вообще все работает замечательно. Такое впечатление, что домино завершает работу недовыполнившегося агента и запускает его по новой. А вы что думаете по этому поводу ?
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    а причем тут агент по расписанию то, если его на деле другой агент запускает принудительно?
    по правильному агент должен отрабатываться и запускаться сам, спустя время после своего завершения он должен опять запускаться
    если же его постоянно пинает другой агент то необходимо учесть эту логику и заставлять агент заканчиваться если он не уложился в дозволенное время, иначе потом дважды запущенный агент будут вдвоём тер*цензура*ить один и тот же док - и посыпется ваша логика
     
  3. Eugenus

    Eugenus Гость

    Полегче) Ничего не посыпется....Я вот тут всего лишь интересовался - действительно ли агент завершается, если его пинают повторно ?
    А если просто подходит его время запуска - дожидается ? Что-то я сомневаюсь насчет лотусной многопоточности...
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    зависит от очереди агентов и количество одновременных потоков
    если у вас 2 и более потока AMGR то есть вероятность, что агенты начнут работать паралельно, так как может получится ситуацию когда в очереди агент за агентом и пойдёт одновременный запуск
    если агентменеджер лишь один то будет "дождаться" но минус в том, что очередь агентов будет разгружаться медленно
     
  5. Eugenus

    Eugenus Гость

    Сорри, насчет агент менеджер - это ведь серверная задача, как их может быть несколько ? Это где-то настраивается ?
     
  6. Eugenus

    Eugenus Гость

    Вообще у меня есть основания предполагать, что при принудительном запуске агент менеджер не ставит выполнение в очередь, а перезапускает агент в одном-едиственном потоке. Мой агент несколько раз лопатит коллекцию документов в цикле и почему-то иной раз существенно подтормаживает на взятии тех либо иных доков, не укладываясь в отведенный пятиминутный интервал....При повторном запуске вся коллеция быстро проходит обработку. Если бы имела место неограниченная многопоточность, нагрузка на сервер возросла бы неимоверно, если бы AMGR ставил их в очередь - принудительный запуск был бы до одного места, очередь бы разгружалась медленно, как и заметил тОха. Но налицо совсем иное - такое впечатление, что агент просто перезапускается. При этом не суть важно, отработает ли агент всю коллецию до конца либо остановится на каком-то доке, поскольку неотработанные доки подхватятся на следующем запуске, важно лишь, чтобы он не застревал на середине обработки какого-то дока, внеся в него какие-либо изменения, которые сделают невозможной дальнейшую работу с ним при след. запуске. Но в моих скриптах это исключено и по тьфу-тьфу, пока все работает стабильно...
     
  7. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    Eugenus
    это вам так кажется, и как вы проверяли нагрузку на сервер то?
    подозреваю что колекцию вы формируете db.Search а значит одновременное срабатывание нескольких агентов на сече приведет к их резкому замедлению работы - проверял ни один раз, суть в том, чтобы выполнить сечь нужно прошуршать винтами, а проверить нагрузку на винты можно лишь через очередь I/O ни проц ни озу в єтом подходе не задействованы вообще
    вот и получается что два одновременных сеча приведут к задержке в 10 мину, а если их запустить последовательно то каждый отработает секунд за 5

    если бы они отрабатывали последовательно то "и почему-то иной раз существенно подтормаживает на взятии тех либо иных доков" - вот этого бы никогда не было, а так вы просто забили операции I/O на максимум
     
  8. Eugenus

    Eugenus Гость

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

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Домино сама принудительно завершает агента только по истечению максимального времени отведённого на работу агентов. По-умолчанию, кажется, 15 мин. Это время можно изменить через notes.ini. В других случаях, в частности по истечению интервала запуска, Домино агента не прерывает.
    Агент который запускает другой агент, запускает второй агент в отдельном потоке? Если нет, тогда первый агент будет ждать завершения второго.
     
  10. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    достаточно начиная с 7ки поставить в агенте галочку - Agent Profiler и там будет подробная статистика по вызовам и их таймингам
    Подтормаживание иногда происходит на последовательной инициализации доков из коллекции - а это что не обращение к диску? :facepalm:
     
  11. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Вопросик без ответа. Мне тоже интересно, можно ли настраивать?

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

    А еще слышал про ограничение по колличеству агенотов в базе. Если больше 8, а-мнгр начинает глючить(в 6ке). Так ли это?
     
  12. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    В серверном names.nsf в документе на сервер закладке "ServerTasks\AgentManager" поле "Max concurrent agents"
    Влияет на количество процессов namgr.exe. В рамках одного процесса одновременно может выполняться только 1 агент.

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

    Фигня
     
  13. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    глючит диск, который не справляется с очередью запросов
     
Загрузка...

Поделиться этой страницей